2009-07-10 2 views
5

Есть ли пакет для обработки параметров командной строки в R?Есть ли пакет для обработки параметров командной строки в 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 

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

ответ

8
+0

Отлично! Жаль, что он не является частью дистрибутива R (по крайней мере, не в R 2.8.1). – Frank

2

Как насчет 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 

Обычные предостережений w.r.t с помощью Eval применяются конечно.

Бесстыдно украден из этого blog post.

Смежные вопросы