2009-07-10 9 views
5

Czy istnieje pakiet do przetwarzania opcji wiersza polecenia w R?Czy istnieje pakiet do przetwarzania opcji wiersza poleceń w R?

Znam commandArgs, ale jest zbyt prosty. Jego wynik jest zasadniczo równoważny z argc i argv w C, ale potrzebuję czegoś ponad to, tak jak boost::program_options w C++ lub GetOptions::Long w perl.

W szczególności chciałbym wcześniej określić, jakie opcje są dozwolone i podać komunikat o błędzie, jeśli użytkownik określi coś innego.

Połączenie będzie w ten sposób (z opcje użytkownika --width = 32 --file = foo.txt):

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

lub, jeżeli jest stosowany Rscript:

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

(Nie mów, "dlaczego sam nie napiszesz, to nie jest takie trudne." W innych językach nie musisz pisać sam. :)

Odpowiedz

2

Jak o commandArgszeval dla wbudowanego w roztworze?

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) 

i powołać go

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

tradycyjnych zastrzeżeń w.r.t użyciu eval zastosować oczywiście.

Bezwstydnie skradziono z tego blog post.

Powiązane problemy