2017-02-16 25 views
1

在Unix腳本中,是否有任何方法可以運行R文件,但在Unix腳本中有參數?在Unix中使用參數執行R腳本

我知道,在系統運行R上的文件,你需要輸入「R -f‘文件’,但你R中需要這樣你將需要在Unix,而不是輸入這個代碼是什麼:

「R -f 」文件「 ARG1 ARG2」

+0

我現在編輯了這些問題。 – erver

回答

1

下面是一個例子,test.R將該代碼:。

#!/usr/bin/env Rscript 
# make this script executable by doing 'chmod +x test.R' 
help = cat(
" 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Help text here 
Arguments in this order: 
    1) firstarg 
    2) secondarg 
    3) thirdarg 
    4) fourtharg 
./test.R firstarg secondarg thirdarg fourtharg 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
\n\n") 

# Read options from command line 
args = commandArgs(trailingOnly = TRUE) 
if(is.element("--help", args) | is.element("-h", args) | is.element("-help", args) | is.element("--h", args)){ 
    cat(help,sep="\n") 
    stop("\nHelp requested.") 
} 

print(args) 

chmod +x test.R 它使用./test.R a b c d然後調用它會打印:[1] "a" "b" "c" "d"

您可以通過執行args[1]訪問每個參數以獲得aargs[4]以獲得d

0

使用Rscript的建議似乎很有用,但可能不是要求提供的內容。也可以從命令行使用獲取來源的輸入文件啓動R. R解釋器也可以在該模式下訪問commandArgs。這是在我的用戶目錄下的最小「ptest.R」的文件,這也是我的默認工作目錄:

ca <- commandArgs() 
print(ca) 

從UNIX命令行我可以這樣做:

$ r -f ~/ptest.r --args "test of args" 

和R打開,顯示通常的啓動消息並宣佈由.Rprofile加載的包然後:

> ca <- commandArgs() 
> print(ca) 
[1] "/Library/Frameworks/R.framework/Resources/bin/exec/R" 
[2] "-f"             
[3] "/Users/davidwinsemius/ptest.r"      
[4] "--args"            
[5] "test of args"           
> 
> 

然後退出。