通过qsub运行R脚本

时间:2013-10-17 01:53:42

标签: r bash pbs qsub rscript

我正在尝试通过R运行名为test.r的{​​{1}}脚本。我的qsub脚本如下:

R

如果在Ubuntu终端中输入#!/usr/bin/Rscript x <- 1 write.csv(x,"test.csv") ,则脚本按计划行事; R CMD BATCH test.r导出到同一目录中。

但是,如果我创建一个名为test.csv的{​​{1}}脚本并通过命令bash运行它;它会运行没有错误,但输出不会在那里。

testbash.sh

如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

尝试将R脚本修改为:

#!/usr/bin/Rscript
x <- 1
print(getwd())
write.csv(x,"test.csv")

当您通过qsub运行脚本时,该脚本通常在另一台服务器上运行,默认情况下在您的主目录中运行。您需要更改脚本中的原始目录,其中有一个变量PBS_O_WORKDIR

#!/usr/bin/bash
#PBS -N qsub_R_test
echo We are in the $PWD directory
cd $PBS_O_WORKDIR
echo We are now in $PBS_O_WORKDIR, running an R script.
R --vanilla < test.r > test.log 2> test.log

我通常无法使用R CMD BATCH,但重定向到R -vanilla有效。您还可以在脚本中指定PBS的选项,从#PBS开始,就像本例中的作业名称(qsub_R_test)一样。

您可以在此处获得更详细的qsub参数列表: http://www.csc.fi/english/pages/louhi_guide/batch_jobs/commands/qsub

这里有一个PBS脚本示例: http://bose.utmb.edu/Compu_Center/Cluster_users/PBS%20HOWTO/PBS_HOW_TO.html

答案 1 :(得分:1)

你可能做错了。如果你有像

这样的shebang系列
#!/usr/bin/Rscript

然后“简单地”对文件执行chmod 0755 test.r,然后运行它:

./test.r

这应该可行,然后您可以在qsub调用的脚本中进行调用。