在Unix腳本中,是否有任何方法可以運行R文件,但在Unix腳本中有參數?在Unix中使用參數執行R腳本
我知道,在系統運行R上的文件,你需要輸入「R -f‘文件’,但你R中需要這樣你將需要在Unix,而不是輸入這個代碼是什麼:
「R -f 」文件「 ARG1 ARG2」
在Unix腳本中,是否有任何方法可以運行R文件,但在Unix腳本中有參數?在Unix中使用參數執行R腳本
我知道,在系統運行R上的文件,你需要輸入「R -f‘文件’,但你R中需要這樣你將需要在Unix,而不是輸入這個代碼是什麼:
「R -f 」文件「 ARG1 ARG2」
下面是一個例子,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]
訪問每個參數以獲得a
和args[4]
以獲得d
。
使用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"
>
>
然後退出。
我現在編輯了這些問題。 – erver