Bash R 的包装器

Bash wrapper for R

我想通过给它一些来自 Bash 的参数来调用一些 R 函数,并存储这个函数 returns 的值。像

#!/usr/bin/Rscript

myfunction(arg1, arg2){
...
...
return(ValueToReturn)
}

并从 Bash

调用它
$ returnedvalue = on ./myscript.r call myfunction -arg1 -arg2

到目前为止,我能想到的唯一解决方案是将参数写入文件,然后调用 R 脚本 ('./myscrpt.r'),其中 'myfunction()' 从文件,然后在我可以从 Bash.

读取的文件上写入 'ValueToReturn'

据我所知这是不可能的,因为 parent 和 child shell 是相关的:child shell 是不允许的改变他们 parent 的环境,这就是为什么放置:

system(paste0("export returnedvalue=", ValuetoReturn))

只会将该变量导出到当前环境以及环境产生的任何后续 child shells。

一个丑陋的方法可能是将输出保存到一个文件中:

system(paste0("echo 'export returnedvalue=", ValuetoReturn, "' > setvars.txt"))

然后在 parent shell 源文件中:

. ./setvars.txt

至少这样你可以保存多个输出。