Разбор аргументов командной строки в R-скриптах - PullRequest
40 голосов
/ 08 августа 2010

Есть ли какой-нибудь удобный способ автоматического разбора аргументов командной строки, передаваемых в сценарии R?

Что-то вроде perl's Getopt::Long?

Ответы [ 4 ]

43 голосов
/ 08 августа 2010

В CRAN есть три пакета:

  • getopt : C-подобное поведение getopt
  • optparse : синтаксический анализатор командной строки, вдохновленный Python optparse library
  • argparse : необязательный анализатор командной строки и позиционный анализатор аргументов (по мотивам библиотеки argparse Python). Этот пакет требует установки интерпретатора Python с модулями argparse и json (или simplejson).

Обновление

  • docopt : позволяет определить интерфейс командной строки, просто предоставив ему описание в определенном формате. Это порт docopt.py .
  • argparser : кроссплатформенный анализатор аргументов командной строки, написанный исключительно на R без внешних зависимостей. Этот пакет полезен с интерфейсом Rscript и позволяет превратить скрипт R в исполняемый скрипт.
  • minimist : привязка к минимизированной библиотеке JavaScript. Этот модуль реализует внутренности синтаксического анализатора аргументов оптимиста без всякого причудливого оформления (без внешних зависимостей)
  • optigrab : анализировать параметры из командной строки, используя простой, чистый синтаксис. Он требует незначительных или нулевых спецификаций и поддерживает короткие и длинные опции, синтаксисы в стиле GNU, Java или Microsoft, команды глаголов и многое другое.
28 голосов
/ 08 августа 2010

Самый простой способ - использовать commandArgs (). Пример - сохранить приведенный ниже код как «options.R»:

options <- commandArgs(trailingOnly = TRUE)
options

Запуск с использованием «Rscript options.R x y z». Результат:

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

т.е. список из 3 элементов, по одному на аргумент.

11 голосов
/ 08 августа 2010

Просто для дополнения ответа Rscript:

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

Мы просто используем argv в littler .Мне повезло с getopt , более старым из двух доступных пакетов для разбора.

5 голосов
/ 17 июня 2014

Могу ли я представить ArgumentParser в Xmisc упаковке?Это синтаксический анализатор командной строки, вдохновленный Python argparse, но без Python.

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

enter image description here

...