Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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:将变量从R传递到unix_R_Variables_Unix_Send - Fatal编程技术网

R:将变量从R传递到unix

R:将变量从R传递到unix,r,variables,unix,send,R,Variables,Unix,Send,我正在通过bash脚本运行一个R脚本,并希望将R脚本的输出返回到bash脚本,以便在那里继续使用它 狂欢节是这样的: #!/bin/bash Rscript MYRScript.R a=OUTPUT_FROM_MYRScript.R do sth with a for(i in 1:5){ i sink(type="message") } R脚本是这样的: #!/bin/bash Rscript MYRScript.R a=OUTPUT_FROM_MYRScript.R do sth wit

我正在通过bash脚本运行一个R脚本,并希望将R脚本的输出返回到bash脚本,以便在那里继续使用它

狂欢节是这样的:

#!/bin/bash
Rscript MYRScript.R
a=OUTPUT_FROM_MYRScript.R
do sth with a
for(i in 1:5){
i
sink(type="message")
}
R脚本是这样的:

#!/bin/bash
Rscript MYRScript.R
a=OUTPUT_FROM_MYRScript.R
do sth with a
for(i in 1:5){
i
sink(type="message")
}
我希望bash同时处理R中的一个变量,这意味着:bash接收I=1并处理它,当任务完成时,接收I=2,依此类推


有什么办法吗?

这里是MYRScript.R

for(iter in 1:5) {
  cat(iter, ' ')
}
下面是您的
bash
脚本:

#!/bin/bash

r_output=`Rscript ~/MYRscript.R`

for iter in `echo $r_output`
do
    echo Here is some output from R: $iter
done


一个选项是使用
#使R脚本可执行/usr/bin/env Rscript
(设置可执行位;例如
chmod 0755 myrscript.r
chmod+x myrscript.r
,等等),并将其与任何其他命令一样处理,例如将结果分配给以下数组变量:

myrscript.r

#!/usr/bin/env Rscript
cat(1:5, sep = "\n")
mybashscript.sh

#!/bin/bash
RES=($(./myrscript.r))
for elem in "${RES[@]}"
do
  echo elem is "${elem}"
done


您希望构造一个从正在运行的R脚本到另一个shell命令的管道。是吗?是的,但是从R到unix,而不是unix到RI,您希望使用R输出(文件名)直接在bash中使用来修改另一个文件。在我看来这样更容易?奇怪的是,在运行您的解决方案时,我得到了一个权限被拒绝(对于myrscript.r)错误。知道为什么吗?先做一个
chmod 0755 myrscript.r
,@gugy抱歉,我在回答中有点掩饰了这一点;谢谢你,德克。