Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R的Bash包装器_R_Bash - Fatal编程技术网

R的Bash包装器

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

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

据我所知,这是不可能的,因为父shell和子shell是相关的:子shell不允许更改父shell的环境,这就是为什么放置:

system(paste0("export returnedvalue=", ValuetoReturn))
将仅将该变量导出到当前环境以及环境生成的任何后续子shell

一种丑陋的方法可能是将输出保存到具有以下内容的文件:

system(paste0("echo 'export returnedvalue=", ValuetoReturn, "' > setvars.txt"))
然后,在父shell源文件中:

. ./setvars.txt

至少通过这种方式,您可以保存多个输出。

不直接回答,但此帮助页面可能会引起兴趣:我不完全清楚您在寻找什么,但我觉得该软件包可能对您有用;我现在无法测试这一点,因为我必须重新启动到我的Linux分区。将结果存储到一个文件中,然后添加几个bash命令将文件内容加载到一个变量中并不是那么糟糕。