将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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |