web-dev-qa-db-ja.com

Rスクリプトでのコマンドライン引数の解析

Rスクリプトに渡されたコマンドライン引数を自動的に解析する便利な方法はありますか?

PerlのGetopt::Longのようなもの?

44
David B

CRANには3つのパッケージがあります。

  • getopt :Cのようなgetoptの動作
  • optparse :Pythonのoptparseライブラリに着想を得たコマンドラインパーサー
  • argparse :コマンドラインのオプションの位置引数パーサー(Pythonのargparseライブラリに触発された)。このパッケージでは、Pythonインタープリターをargparseおよびjson(またはsimplejson)モジュールとともにインストールする必要があります。

更新

  • docopt :特定の形式で説明を与えるだけで、コマンドラインインターフェイスを定義できます。これはポートa docopt.py です。
  • argparser :純粋にRで書かれたクロスプラットフォームのコマンドライン引数パーサーで、外部の依存関係はありません。このパッケージはRscriptフロントエンドで役立ち、Rスクリプトを実行可能スクリプトに変換するのを容易にします。
  • minimist :ミニミストJavaScriptライブラリへのバインディング。このモジュールは、すべての空想的な装飾なしで(外部依存関係なし)オプティミストの引数パーサーの根性を実装します
  • optigrab :シンプルでクリーンな構文を使用して、コマンドラインからオプションを解析します。仕様はほとんどまたはまったく必要なく、短いオプションと長いオプション、GNU、Java、またはMicrosoftスタイルの構文、動詞コマンドなどをサポートしています。
45
rcs

最も簡単な方法は、commandArgs()を使用することです。例-以下のコードを「options.R」として保存します。

options <- commandArgs(trailingOnly = TRUE)
options

「Rscript options.R x y z」を使用して実行します。結果:

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

i.e。引数ごとに1つずつ、3つの要素のリスト。

30
neilfws

Rscriptの回答を補足するだけです。

edd@max:~$ r -e 'print(argv)' flim flam flom
[1] "flim" "flam" "flom"
edd@max:~$ 

littlerargvを使用します。私は getopt の2つの利用可能な解析パッケージのうちの古い方で幸運を手にしました。

11

Xmisc パッケージにArgumentParserを導入できますか?これは、Pythonのargparseに着想を得たコマンドラインパーサーですが、Pythonを使用していません。

http://cran.r-project.org/web/packages/Xmisc/vignettes/Xmisc-ArgumentParser.pdf

enter image description here

5
xb.