Как я могу считать параметры командной строки из сценария R?

У меня есть сценарий R, для которого я хотел бы иметь возможность предоставить несколько параметров командной строки (а не hardcode значения параметров в самом коде). Сценарий работает на Windows.

Я не могу найти информацию о том, как считать параметры, предоставленные на командной строке в мой сценарий R. Я был бы удивлен, не может ли это быть сделано, поэтому возможно, я просто не использую лучшие ключевые слова в своем поиске Google...

Какие-либо указатели или рекомендации?

275
задан monch1962 27 January 2010 в 13:40
поделиться

4 ответа

Ответ Дирка здесь Это все, что вам нужно. Вот минимальный воспроизводимый пример.

Я сделал два файла: EXMPL.BAT и EXMPL.R .

  • EXMPL.BAT :

     Установите R_Script = «C: \ Program Files \ R-3.0.2 \ bin \ rscript.exe»
     % R_Script% EXMPL.R 2010-01-28 Пример 100> EXMPL.Batch 2> & 1
     

    В качестве альтернативы, используя Rterm.exe :

     Установите r_term = "C: \ Program Files \ R-3.0.2 \ bin \ I386 \ Rterm.exe"
     % R_TRM% --NO RESTORE --NO-SAVE --ARGS 2010-01-28 Пример 100  exmpl.batch 2> & 1
     
  • exmpl.r :

     Параметры (echo = true) # Если вы хотите увидеть команды в выходном файле
    args <- commandargs (trailingonly = true)
    Печать (args)
     # Trailingonly = True означает, что возвращаются только ваши аргументы, проверьте:
     # Печать (commandargs (trailingonly = false))
    
    start_date <- as.date (args [1])
    Имя <- args [2]
    N <- AS.Integer (args [3])
    RM (args)
    
     # Некоторые вычисления:
    X <- RNORM (N)
    PNG (вставка (имя ». PNG", SEP = ""))
    Участок (start_date + (1л: n), x)
    dev.off ()
    
    Сводка (х)
     

Сохраните оба файла в одном каталоге и запуска EXMPL.BAT . В результате вы получите:

  • Example.png с некоторым участком
  • EXMPL.Batch со всем, что было сделано

, вы также можете добавить переменную среды % R_Script% :

"C:\Program Files\R-3.0.2\bin\RScript.exe"

и используйте его в ваших пакетных сценариях как % R_Script% <Аргументы>

Различия между RSCript и RTRM :

205
ответ дан 23 November 2019 в 02:11
поделиться

Вам нужно Littler (произносится «маленький R»)

Дирк будет за более чем 15 минут, чтобы разработать;)

10
ответ дан 23 November 2019 в 02:11
поделиться

Добавьте это в верхнюю часть вашего сценария:

args<-commandArgs(TRUE)

Затем вы можете ссылаться на аргументы, переданные как args [1] , args [2] и т. Д.

Затем запустите

Rscript myscript.R arg1 arg2 arg3

, если ваши args представляют собой строки с пробелами в них, приложитесь в двойные кавычки.

91
ответ дан 23 November 2019 в 02:11
поделиться

Несколько моментов:

  1. Параметры командной строки доступны через commandArgs () , поэтому { {1}} см. справку (commandArgs) для обзора .

  2. Вы можете использовать Rscript.exe на всех платформах, включая Windows. Он будет поддерживать commandArgs () . littler может быть перенесен на Windows, но сейчас живет только на OS X и Linux.

  3. В CRAN есть два дополнительных пакета - getopt и optparse , которые были написаны для синтаксического анализа командной строки.

Редактировать в ноябре 2015 г .: Появились новые альтернативы, и я искренне рекомендую docopt .

124
ответ дан 23 November 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: