将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)

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...