У меня есть сценарий R, для которого я хотел бы иметь возможность предоставить несколько параметров командной строки (а не hardcode значения параметров в самом коде). Сценарий работает на Windows.
Я не могу найти информацию о том, как считать параметры, предоставленные на командной строке в мой сценарий R. Я был бы удивлен, не может ли это быть сделано, поэтому возможно, я просто не использую лучшие ключевые слова в своем поиске Google...
Какие-либо указатели или рекомендации?
Ответ Дирка здесь Это все, что вам нужно. Вот минимальный воспроизводимый пример.
Я сделал два файла: 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
:
RSCript
имеет более простые синтаксис RSPript
автоматически выбирает архитектуру на X64 (см. R Установка и администрирование, 2.6 Подготовительные архитектуры для получения подробной информации) RSCript
Опции (echo = true)
в файле .r Если вы хотите написать команды в выходной файл Вам нужно Littler (произносится «маленький R»)
Дирк будет за более чем 15 минут, чтобы разработать;)
Добавьте это в верхнюю часть вашего сценария:
args<-commandArgs(TRUE)
Затем вы можете ссылаться на аргументы, переданные как args [1]
, args [2]
и т. Д.
Затем запустите
Rscript myscript.R arg1 arg2 arg3
, если ваши args представляют собой строки с пробелами в них, приложитесь в двойные кавычки.
Несколько моментов:
Параметры командной строки
доступны через commandArgs ()
, поэтому { {1}} см. справку (commandArgs)
для обзора
.
Вы можете использовать Rscript.exe
на всех платформах, включая Windows. Он будет поддерживать commandArgs ()
. littler может быть перенесен на Windows, но сейчас живет только на OS X и Linux.
В CRAN есть два дополнительных пакета - getopt и optparse , которые были написаны для синтаксического анализа командной строки.
Редактировать в ноябре 2015 г .: Появились новые альтернативы, и я искренне рекомендую docopt .