2011-08-12 15 views
5

Estoy tratando de usar mi script R en modo batch, pero R no parece capaz de analizar los parámetros citados correctamente:modo por lotes citado parámetros de análisis sintáctico

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

Entonces, si un parámetro con espacios y citas es suministrado, como:

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

la salida es:

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

por supuesto me gustaría el tercer parámetro a s='string with spaces': ¿hay alguna manera de obtener eso?

¡Gracias!

+0

¿es seguro asumir que solo está en Mac o Linux? –

+0

sí, uso linux – Erwan

Respuesta

1

Sí, R CMD BATCH actúa un poco raro.

Tal vez puedas probar:

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

El --slave y opciones --vanilla podrían ser reemplazados por opciones más adecuadas según sea necesario.

+0

¡Perfecto! ¡Muchas gracias! – Erwan

+1

vea también el paquete más pequeño que hace algunas cosas aún más fáciles, IMO: http://dirk.eddelbuettel.com/code/littler.html –

+0

parece interesante también, gracias! – Erwan

Cuestiones relacionadas