R的Bash包装

时间:2015-01-28 13:39:59

标签: r bash

我想通过从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”。

1 个答案:

答案 0 :(得分:0)

由于父母和子女之间的关系,我不知道这是不可能的:儿童炮弹不允许改变父母的环境,这就是为什么要这样做:

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

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

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

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

然后在父shell源文件:

. ./setvars.txt

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