将Rscript中的布尔值输出到Bash变量中

前端之家收集整理的这篇文章主要介绍了将Rscript中的布尔值输出到Bash变量中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个输出TRUE或FALSE的R脚本.在R中,它使用了真正的T / F数据类型,但当我将其返回值回显为bash时,它似乎是一个字符串,说:

“[1]为真”

要么

“[1] FALSE”

它们都先于[1].也不是[0],这不是拼写错误.无论如何,这是因为当我尝试测试此Rscript的输出以运行后续脚本时,我必须将字符串比较为“[1] TRUE”,如下所示,而不是比较“TRUE”或“ 1“感觉更干净,更好.

A=$(Rscript ~/MyR.r)
echo $A
if [ "$A" == "[1] TRUE" ]; then
    bash SecondScript.sh
fi

如何让R输出一个真正的布尔值,或者Bash接受输出字符串并将其转换为0/1进行比较?也就是说,我宁愿测试……

if [ $A == TRUE ];

if [ "$A" == "[1] TRUE" ];

这是可能的,或者我应该对此感到满意,它是如何的,哪个有效?

*更新*

这是产生这个的Rscript的最小化版本……

myinput <- TRUE #or FALSE

FunctionName <- function(test){
if (test == TRUE){
val <- TRUE
} else {
val <- FALSE
}
return(val)
}

FunctionName(myinput)
在向R解释器提供对象名称时,不应使用print()或隐式print() – 你应该使用cat(),它不会在TRUE前面加上“[1]”.或者错误.如果你想要0/1,那么使用cat(as.numeric(.)).试试这个:
myinput <- TRUE #or FALSE
FunctionName <- function(test){
   if (test == TRUE){
              val <- TRUE
                    } else {
              val <- FALSE
            }
   cat(as.numeric(val))
}
FunctionName(myinput)

如果您需要该值进行进一步处理,您也可以使用:

cat(as.numeric(val)); invisible(val)

猜你在找的Bash相关文章