我有一个输出 TRUE 或 FALSE 的 R 脚本。在 R 中,它使用真正的 T/F 数据类型,但是当我将它的返回值回显到 bash 时,它似乎是一个字符串,说:
"[1] TRUE"
或者
"[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)