gpt4 book ai didi

r - 将 Rscript 中的 bool 值输出到 Bash 变量中

转载 作者:行者123 更新时间:2023-11-29 08:59:34 27 4
gpt4 key购买 nike

我有一个输出 TRUE 或 FALSE 的 R 脚本。在 R 中,它使用真正的 T/F 数据类型,但是当我将它的返回值回显给 bash 时,它似乎是一个字符串,说:

[1] 真”

[1] 错误”

它们都以 [1] 开头。 [0] 也不是,这不是错字。无论如何,当我尝试测试此 Rscript 的输出以运行后续脚本时,结果是我必须如下所示与“[1] TRUE”进行字符串比较,而不是与“TRUE”或“进行比较1",感觉更干净、更好。

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

如何让 R 输出一个真正的 bool 值,或者 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)

最佳答案

不要使用 print() 或在向 R 解释器提供对象名称时发生的隐式 print()-ing,您应该使用 cat(),它不会在“[1]”在 TRUE 或 FALSE 前面。如果你想要 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)

关于r - 将 Rscript 中的 bool 值输出到 Bash 变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10575005/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com