Есть ли пакет для обработки параметров командной строки в R? - PullRequest
5 голосов
/ 10 июля 2009

Есть ли пакет для обработки параметров командной строки в R?

Я знаю commandArgs, но это слишком просто. Его результат в основном эквивалентен argc и argv в C, но мне нужно что-то еще, например, boost::program_options в C++ или GetOptions::Long в perl.

В частности, я хотел бы заранее указать, какие параметры разрешены, и выдать сообщение об ошибке, если пользователь указывает что-то еще.

Вызов будет таким (с опциями пользователя --width = 32 --file = foo.txt):

R --vanilla --args --width=32 --file=foo.txt < myscript.R

или, если используется Rscript:

myscript.R --width=32 --file=foo.txt 

(Пожалуйста, не говорите: «Почему бы вам не написать это самим, это не так сложно». На других языках вам также не нужно писать это самим.:)

Ответы [ 2 ]

8 голосов
/ 10 июля 2009
2 голосов
/ 26 января 2010

Как насчет commandArgs с eval для встроенного решения?

test.r

## 'trailingOnly=TRUE' means only parse args after '--args'
args=(commandArgs(trailingOnly=TRUE))

## Supply default arguments
if(length(args)==0){
    print("No arguments supplied.")
    ##supply default values
    a = 1
    b = c(1,1,1)
}else{
    for(i in 1:length(args)){
         eval(parse(text=args[[i]]))
    }
}
print(a*2)
print(b*3)

и вызвать его

R CMD BATCH --no-save --no-restore '--args a=1 b=c(2,5,6)' test.R test.out

Обычные предупреждения с использованием eval применяются, конечно.

Бесстыдно похищенный из этого сообщения в блоге .

...