通过 qsub 运行 R 脚本

标签 r bash pbs qsub rscript

我正在尝试通过 qsub 运行名为 test.rR 脚本。我的R脚本如下:

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

如果我在 Ubuntu 终端中键入 R CMD BATCH test.r,那么脚本会按计划运行; test.csv 在同一目录中导出。

但是,如果我创建一个名为 testbash.shbash 脚本并通过命令 qsub testbash.sh 运行它;它会无错误地运行,但输出不会在那里。

#!/usr/bin/bash
R CMD BATCH test.r

如何解决这个问题?

最佳答案

尝试将您的 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

关于通过 qsub 运行 R 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19416972/

相关文章:

bash - bash 中的 matlab 批处理并行化

检索给定大小 k 的 n 项的所有可能组合,并在另一列上应用函数 sum

r - 当 multiple 为 true 时,如何限制用户可以使用 R Shiny 的 selectInput 选择的选项数量?

r - 调度属于 R 包的函数

python - 使用 Ipython 并行在 PBS 集群上注册超时

python - PBS 职位限制指令的语法是什么

r - 使用 ggplot2 绘制多条曲线

重组 data.frames 列表

bash - 当没有 “return” 语句时,bash 函数返回什么?

linux - 无法在 Debian Squeeze 中检查 cups 打印机状态