加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 01:34:36 所属栏目:安全 来源:网络整理
导读:我有一个输出TRUE或FALSE的R脚本.在R中,它使用了真正的T / F数据类型,但当我将其返回值回显为bash时,它似乎是一个字符串,说: “[1]为真” 要么 “[1] FALSE” 它们都先于[1].也不是[0],这不是拼写错误.无论如何,这是因为当我尝试测试此Rscript的输出以运行
我有一个输出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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读