2012-02-19 5 views
2

グリッドにRジョブを提出したいと考えました。私はRスクリプトをグリッドにバッチ形式で提出する

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

を書かれているcallmgsa.rファイルでMGSA_rand.r にメインRコードを保存していると私は$SGE_TASK_ID)

R CMD BATCH --no-save callmgsa.r 
にcorrseponding値を送信 -tパラメータを持つジョブを(呼び出すためにファイル Rscript.shを使用します

私はこのようなジョブを発行:

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

私はエラーも出力も得られません。私がそれを提出するのと同じように仕事は終了し、出力はありません。手伝っていただけませんか?
ありがとう、ペガ

+0

あなたがシェバングとしてRscriptを試してみましたか?それはスクリプトを作成するための通常の方法です:http://stackoverflow.com/questions/750786/whats-the-best-way-to-use-r-scripts-on-the-command-line – flodel

+0

$ SGE_TASK_IDが環境の場合変数には、Rスクリプト内で 'Sys.getenv(" SGE_TASK_ID ")'を使用してアクセスする必要があります。あなたの答えには – flodel

答えて

0

変数$SGE_TASK_IDはシェルスクリプト変数です。 Rで同じ構文で呼び出すことはできません。あなたができることは代わりにRscriptを使用することです。あなたが呼び出すシェルスクリプトから:

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

+0

Rscriptをシェルスクリプトから呼び出すと、Rが呼び出されます。 –

+0

...または、あなたのcallmgsa.rの先頭に '#!/ path_to_R_install/bin/Rscript'のようなシバンを置き、ファイルを実行可能な' chmod + x callmgsa.r'にします。 – flodel

関連する問題