Подтвердить что ты не робот

Разбор аргументов командной строки в сценариях R

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

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

4b9b3361

Ответ 1

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

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

Обновление

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

Ответ 2

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

options <- commandArgs(trailingOnly = TRUE)
options

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

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

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

Ответ 3

Просто чтобы дополнить ответ Rscript:

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

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