2009-07-10 17 views
5

¿Hay algún paquete para procesar opciones de línea de comandos en R?¿Hay algún paquete para procesar opciones de línea de comando en R?

commandArgs, pero es demasiado básico. Su resultado es básicamente el equivalente a argc y argv en C, pero necesitaría algo además de eso, al igual que boost::program_options en C++, o GetOptions::Long en perl.

En particular, me gustaría especificar de antemano qué opciones están permitidas y dar un mensaje de error si el usuario especifica algo más.

La llamada sería así (con opciones de usuario --width = 32 --file = foo.txt):

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

o, si se utiliza Rscript:

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

(Por favor, no diga, "¿por qué no lo escribe usted mismo? No es tan difícil". En otros idiomas tampoco tiene que escribirlo usted mismo :) :)

Respuesta

8
+0

¡Genial! Lástima que no es parte de la distribución R (al menos no en R 2.8.1). – Frank

2

¿Qué tal commandArgsconeval para una construida en la solución?

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) 

e invocar que

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

Las advertencias habituales w.r.t usando eval aplican por supuesto.

Robado desvergonzadamente de este blog post.

Cuestiones relacionadas