2010-08-08 153 views
36

是否有任何方便的方法來自動解析傳遞給R腳本的命令行參數?解析R腳本中的命令行參數

有點像perl的Getopt::Long

+0

相關http://stackoverflow.com/questions/2151212/how-can-i-read-command-line-parameters-from-an-r-script。 – Blaisorblade 2012-04-19 18:13:15

回答

32

上有CRAN三個包:

  • getopt:C類getopt的行爲
  • optparse:命令行分析器的靈感來自Python的optparse
  • argparse:命令行可選的,位置參數解析器(由Python的argparse庫啓發)。該軟件包要求安裝Python解釋器,其中包含​​和json(或simplejson)模塊。

更新

  • docopt:允許您通過只是付出的特定格式的描述定義了一個命令行界面。它是一個港口。
  • argparser:純粹在R中編寫的跨平臺命令行參數解析器,沒有外部依賴關係。這個包在Rscript前端很有用,並且有助於將R腳本轉換爲可執行腳本。
  • minimist:與最小化JavaScript庫的綁定。該模塊實現了樂觀主義者參數解析器的膽量,沒有任何幻想裝飾(沒有外部依賴)
  • optigrab:使用簡單,乾淨的語法從命令行解析選項。它只需要很少或沒有規範,並支持短期和長期選項,GNU,Java或Microsoft風格的語法,動詞命令等等。
+3

由於某些原因,'argparse'實際上*需要* Python。讓我先嚐試'optparse' ... – krlmlr 2013-07-15 13:49:59

+4

不請自來的建議 - 儘量使用R內部優秀的python argparse包,但跨語言依賴只會讓你的R腳本變得更加複雜和脆弱。不要這樣做。使用上述的純R選項之一。 – 2015-02-20 18:19:15

25

最簡單的方法是使用commandArgs()。示例 - 將以下代碼保存爲「options.R」:

options <- commandArgs(trailingOnly = TRUE) 
options 

使用「Rscript options.R x y z」運行。結果:

[1] "x" "y" "z" 

3個元素,每一個自變量的列表。

+7

這與'getopt'選項解析不相似。 – 2013-10-23 21:14:58

+0

請注意我近7年前回答了這個問題;現在肯定會有更好的方式:) – neilfws 2017-05-17 22:12:08

11

只是爲了補充RSCRIPT答案:

[email protected]:~$ r -e 'print(argv)' flim flam flom 
[1] "flim" "flam" "flom" 
[email protected]:~$ 

我們只是在littler使用argv。我和getopt這兩個可用的解析包中較老的一起祝你好運。