R的Bash包装器
我想通过从Bash中为某个R函数提供一些参数来调用它,并存储该函数返回的值。差不多R的Bash包装器,r,bash,R,Bash,我想通过从Bash中为某个R函数提供一些参数来调用它,并存储该函数返回的值。差不多 #!/usr/bin/Rscript myfunction(arg1, arg2){ ... ... return(ValueToReturn) } 从Bash中调用它 $ returnedvalue = on ./myscript.r call myfunction -arg1 -arg2 到目前为止,我能想到的唯一解决方案是在文件中写入参数,然后调用R脚本'/myscrpt.R',其中'myfuncti
#!/usr/bin/Rscript
myfunction(arg1, arg2){
...
...
return(ValueToReturn)
}
从Bash中调用它
$ returnedvalue = on ./myscript.r call myfunction -arg1 -arg2
到目前为止,我能想到的唯一解决方案是在文件中写入参数,然后调用R脚本'/myscrpt.R',其中'myfunction'从文件中读取参数,然后在我可以从Bash读取的文件上写入“ValueToReturn”。据我所知,这是不可能的,因为父shell和子shell是相关的:子shell不允许更改父shell的环境,这就是为什么放置:
system(paste0("export returnedvalue=", ValuetoReturn))
将仅将该变量导出到当前环境以及环境生成的任何后续子shell
一种丑陋的方法可能是将输出保存到具有以下内容的文件:
system(paste0("echo 'export returnedvalue=", ValuetoReturn, "' > setvars.txt"))
然后,在父shell源文件中:
. ./setvars.txt
至少通过这种方式,您可以保存多个输出。不直接回答,但此帮助页面可能会引起兴趣:我不完全清楚您在寻找什么,但我觉得该软件包可能对您有用;我现在无法测试这一点,因为我必须重新启动到我的Linux分区。将结果存储到一个文件中,然后添加几个bash命令将文件内容加载到一个变量中并不是那么糟糕。