R:将变量从R传递到unix
我正在通过bash脚本运行一个R脚本,并希望将R脚本的输出返回到bash脚本,以便在那里继续使用它 狂欢节是这样的: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
#!/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抱歉,我在回答中有点掩饰了这一点;谢谢你,德克。