2016-05-12 73 views
0

我正在嘗試運行R腳本。如何在.sh文件中運行R作業

這些都是從我的[R腳本big2.r

dataa <- read.csv("/home/people/R2/big2.csv") 
write.csv(head(dataa), file="/home/people/R2/head.csv") 

一些行,當我在終端執行R CMD BATCH big2.r,它給了我一個.Rout與head.csv文件一起。

但是當我嘗試,使用我的big2.sh文件提交作業使用qsub big2.sh隊列它不給我一個.Rout文件或head.csv併爲工作和qstat被C standard,然後就不見了。

這是我的sh文件

#!/bin/bash -l 

module load R/3.2.2 
R CMD BATCH big2.r 

我在做什麼錯誤的內容?提交執行R腳本的作業的正確方法是什麼?

當我嘗試#!/usr/bin/r時出現以下錯誤。

-bash: /var/spool/torque/mom_priv/jobs/363059.sonic-head.SC: /usr/bin/r: bad interpreter: No such file or directory

我試着在Bash script: bad interpreter找到了解決辦法,但沒有幫助。

+1

[如何在shell腳本中運行R代碼?](http://stackoverflow.com/questions/24642281/how-to-run-r-codes-inside-shell-script)可能的副本 –

+0

嗨Hack-R,the解決方案提供編輯該鏈接不解決我的問題:( – andy

+0

你試過了嗎?正如您所描述的那樣,沒有什麼特別的情況,您提供的示例並不遵循解決方案。根據你對你的問題所做的編輯以及相關的錯誤,我會說你需要驗證位置並且/或者試着把路徑放到Rscript的第一行,比如'#!/ usr/bin/Rscript'。 –

回答

1

好的嘗試是這樣的:

#!/usr/bin/bash -l 
#PBS -N qsub_R_test 

cd $PBS_O_WORKDIR 
echo We are now in working directory $PWD 
module load R/3.2.2 
R CMD BATCH big2.r 
+0

「#!/ usr/bin/bash -l」給我-bash:/var/spool/torque/mom_priv/jobs/363068.sonic-head.SC:/ usr/bin/bash:bad翻譯:沒有這樣的文件或目錄 – andy

+0

把你自己的bash路徑那裏 – Sudhir

+0

非常感謝Sudhir,我很慚愧地說,我還沒有看到.rout文件或head.csv,因爲它們是在主目錄中創建的。你做的非常出色。謝謝sooo多:) – andy

-1

您可以創建類似(batchR.sh)一個shell腳本:

#!/bin/bash 
#$ -S (your parameter can go here, one line for each) 
#$ -j xyz 

module load R/3.2.2 #in case you specifically need to load R on server node 
R CMD BATCH big2.r 

提交以此爲 的qsub batchR.sh

+0

嗨Sudhir,當我使用#!/ bin/bash而不是#!/ bin/bash -l時,出現以下錯誤:init.c(379):錯誤:109 :未知的shell類型'load' /var/spool/torque/mom_priv/jobs/363060.sonic-head.SC:line 4:R:command not found – andy

+0

哦,我的錯誤。你是否在.sh文件中提供隊列的參數? qsub將讀取作業提交的參數,例如內存,哪個隊列等。因此,無論您需要爲隊列提交指定哪個參數,都將它們放在#!/ bin/bash之後的.sh文件的頂部作爲註釋(#$) – Sudhir

+0

Sudhir我可以問你一個不同的問題嗎?如果我想從工作節點切換到高存儲節點,它聲明我必須提到在PBS中我知道節點名稱,我想如何提及使用#PBS ?我知道#PBS -l可用於每個節點的節點和處理器數量。但是,這是節點 – andy