2012-02-19 62 views
2

我想向網格提交R作業。我在MGSA_rand.r 保存的主要研發代碼在callmgsa.r我寫以批處理形式提交R腳本到網格

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

的文件,我使用的文件Rscript.sh調用工作(與-t參數我送corrseponding到$SGE_TASK_ID)

R CMD BATCH --no-save callmgsa.r 

我提交作業是這樣的:

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

我既沒有錯誤也沒有輸出。這個工作就像我提交時一樣終止,沒有任何輸出。你可以幫我嗎?
謝謝,Pegah

+0

你試過RSCRIPT的家當?這是創建腳本的常用方式:http://stackoverflow.com/questions/750786/whats-the-best-way-to-use-r-scripts-on-the-command-line – flodel 2012-02-19 12:12:40

+0

如果$ SGE_TASK_ID是一個環境變量,你需要使用'Sys.getenv(「SGE_TASK_ID」)'在你的R腳本中訪問它。 – flodel 2012-02-19 12:38:57

回答

0

變量$SGE_TASK_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) 

這應該工作...

+0

感謝您的回答。但是我應該在哪裏調用R本身?我已經在Rscript.sh中調用它。 – Pegah 2012-02-19 18:32:42

+0

您可以通過shell腳本使用Rscript調用R。 – 2012-02-19 22:14:44

+0

......或者在你的callmgsa.r的頂部放置一個shebang,如'#!/ path_to_R_install/bin/Rscript',並使該文件成爲可執行的'chmod + x callmgsa.r'。 – flodel 2012-02-19 22:33:47