我想通过从Bash给它一些参数调用一些R函数并存储该函数返回的值。像
这样的东西#!/usr/bin/Rscript
myfunction(arg1, arg2){
...
...
return(ValueToReturn)
}
并从Bash中调用它
$ returnedvalue = on ./myscript.r call myfunction -arg1 -arg2
到目前为止,我能想到的唯一解决方案是在文件上写入参数然后调用R脚本('./myscrpt.r'),其中'myfunction()'从文件中读取参数,然后在我可以从Bash读取的文件上写“ValueToReturn”。
答案 0 :(得分:0)
由于父母和子女之间的关系,我不知道这是不可能的:儿童炮弹不允许改变父母的环境,这就是为什么要这样做:
system(paste0("export returnedvalue=", ValuetoReturn))
只会将该变量导出到当前环境以及环境产生的任何后续子shell。
一种丑陋的方式可能是将输出保存到文件中:
system(paste0("echo 'export returnedvalue=", ValuetoReturn, "' > setvars.txt"))
然后在父shell源文件:
. ./setvars.txt
至少这样可以保存多个输出。