以批处理的形式向网格提交R脚本

以批处理的形式向网格提交R脚本,r,grid-computing,R,Grid Computing,我想向网格提交一份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\u TASK\u ID)对应的值) 我提交的工作如下: qsub -t 1 -cwd -b y -l vf=1000m /home/users/

我想向网格提交一份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\u TASK\u ID)对应的值)

我提交的工作如下:

qsub -t 1 -cwd -b y -l  vf=1000m /home/users/pegah/Rscript.sh  
我既没有得到错误,也没有得到任何输出。作业在我提交时终止,没有任何输出。你能帮帮我吗?

谢谢,Pegah

变量
$SGE\u TASK\u ID
是一个shelscript变量。用同样的语法在R中调用它是行不通的。您可以使用
Rscript
代替。从您调用的shell脚本:

Rscript callmgsa.r $SGE_TASK_ID
在R脚本中,您可以捕获命令行参数,如:

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

args变量
$SGE\u TASK\u ID
是一个shelscript变量。用同样的语法在R中调用它是行不通的。您可以使用
Rscript
代替。从您调用的shell脚本:

Rscript callmgsa.r $SGE_TASK_ID
在R脚本中,您可以捕获命令行参数,如:

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

args您是否尝试将Rscript作为shebang?这是创建脚本的常用方法:如果$SGE_TASK_ID是一个环境变量,则需要使用
Sys.getenv(“SGE_TASK_ID”)
在R脚本中访问它。您是否尝试过将Rscript作为一个shebang?这是创建脚本的常用方法:如果$SGE\u TASK\u ID是一个环境变量,则需要使用
Sys.getenv(“SGE\u TASK\u ID”)
在R脚本中访问它。谢谢您的回答。但是我应该把R本身称为什么呢?我在Rscript.sh中调用了它。您通过shellscript使用Rscript调用R。。。。或者在callmgsa.r的顶部放一个shebang,类似于
#/安装/bin/Rscript的路径,并使文件成为可执行文件
chmod+x callmgsa.R
。感谢您的回答。但是我应该把R本身称为什么呢?我在Rscript.sh中调用了它。您通过shellscript使用Rscript调用R。。。。或者在callmgsa.r的顶部放一个shebang,类似于
#/安装/bin/Rscript的路径,并使文件成为可执行文件
chmod+x callmgsa.R