【问题标题】:submit R script to grid in form of batch以批处理的形式将 R 脚本提交到网格
【发布时间】:2012-03-10 00:15:30
【问题描述】:

我想向网格提交 R 作业。我已将主要 R 代码保存在 MGSA_rand.r 在文件callmgsa.r我写过

print('here')
source('/home/users/pegah/MGSA_rand.r')
mgsalooprand($SGE_TASK_ID,382)

我使用文件Rscript.sh 调用作业(使用-t 参数,我发送对应于$SGE_TASK_ID) 的值

R CMD BATCH --no-save callmgsa.r

我这样提交作业:

qsub -t 1 -cwd -b y -l  vf=1000m /home/users/pegah/Rscript.sh  

我既没有得到错误也没有任何输出。作业在我提交时终止,没有任何输出。你能帮帮我吗?
谢谢,佩加

【问题讨论】:

  • 你试过把 Rscript 当作 shebang 吗?这是创建脚本的常用方法:stackoverflow.com/questions/750786/…
  • 如果 $SGE_TASK_ID 是环境变量,您需要使用 Sys.getenv("SGE_TASK_ID") 在您的 R 脚本中访问它。

标签: r grid-computing


【解决方案1】:

变量$SGE_TASK_ID 是一个shellscript 变量。用相同的语法在 R 中调用它是行不通的。你可以做的是改用Rscript。从您调用的 shellscript 中:

Rscript callmgsa.r $SGE_TASK_ID

在 R 脚本中,您可以捕获如下命令行参数:

args <- commandArgs(trailingOnly = TRUE)
print('here')
source('/home/users/pegah/MGSA_rand.r')
mgsalooprand(args[1],382)

这应该可以工作...

【讨论】:

  • 感谢您的回答。但是我应该在哪里称呼 R 本身呢?我在 Rscript.sh 中调用了它。
  • 你通过 shellscript 使用 Rscript 调用 R。
  • ... 或在 callmgsa.r 的顶部放置一个 shebang,例如 #!/path_to_R_install/bin/Rscript 并使文件成为可执行文件 chmod +x callmgsa.r
猜你喜欢
  • 1970-01-01
  • 2015-12-28
  • 2021-08-01
  • 2015-09-08
  • 1970-01-01
  • 2015-07-15
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多