2012-02-19 4 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 

나는 오류도 출력도받지 못한다. 작업은 출력 할 때와 마찬가지로 제출할 때 종료됩니다. 저 좀 도와 주 시겠어요?
감사합니다. Pegah

+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

... 또는'#!/path_to_R_install/bin/Rscript'와 같은 callmgsa.r의 맨 위에 shebang을 놓고 그 파일을'chmod + x callmgsa.r' 실행 파일로 만듭니다. – flodel