пакетный режим парсинга указанных параметров - PullRequest
6 голосов
/ 12 августа 2011

Я пытаюсь использовать мой R-скрипт в пакетном режиме, но R не может правильно проанализировать параметры в кавычках:

args=(commandArgs(TRUE))
for(i in 1:length(args)){
   print(paste('ARG ',i,args[[i]],sep=" "))
}

Тогда, если указан параметр с пробелами и кавычками, например:

R CMD BATCH "--args foo=2 bar=3 's=string with spaces'"  test-parameters.R output

вывод:

[1] "ARG  1 foo=2"
[1] "ARG  2 bar=3"
[1] "ARG  3 's=string"
[1] "ARG  4 with"
[1] "ARG  5 spaces'"

конечно, я бы хотел, чтобы третий параметр был s='string with spaces': есть ли способ получить это?

Спасибо!

Ответы [ 2 ]

1 голос
/ 12 декабря 2018

Чтобы придерживаться R CMD BATCH, я закончил передачу аргумента с помощью каретки, где требуется пробел, и затем выполнил gsub ("^", "", argumentsPassed, fixed = TRUE)

Пакетный скрипт

R CMD BATCH --no-restore "--args automationRDS='//networkLocation/folder/folder/my^filename^has^spaces.RDS'" "\\networkLocation\folder\folder\RScript.R"

В пределах R

automationRDS <- gsub("^"," ",automationRDS,fixed=TRUE)

Мне нравится функция ведения журнала R CMD BATCH против Rscript

1 голос
/ 12 августа 2011

Да, R CMD BATCH ведет себя немного странно.

Попробуйте вместо этого:

R --slave --vanilla --file=test-parameters.R --args foo=2 bar=3 "s=string with spaces" > output

При необходимости опции --slave и --vanilla могут быть заменены более подходящими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...