R:将变量从 R 传递到 unix

R: pass variable from R to unix

我是通过 bash 脚本 运行 的 R 脚本,并希望 return R 脚本的输出到 bash 脚本以继续使用它.

bash是这样的:

#!/bin/bash
Rscript MYRScript.R
a=OUTPUT_FROM_MYRScript.R
do sth with a

R 脚本是这样的:

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

Here is some output from R: 1
Here is some output from R: 2
Here is some output from R: 3
Here is some output from R: 4
Here is some output from R: 5

一种选择是使用 #!/usr/bin/env Rscript 使您的 R 脚本可执行(设置可执行位;例如 chmod 0755 myrscript.rchmod +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

nrussell$ ./mybashscript.sh
elem is 1
elem is 2
elem is 3
elem is 4
elem is 5