2010-08-08 14 views

Respuesta

32

Hay tres paquetes en CRAN:

  • getopt: Comportamiento getopt C-como
  • optparse: un analizador de línea de comandos inspirada en Python optparse biblioteca
  • argparse: una línea de comandos opcional y analizador de argumentos posicional (inspirado en la biblioteca de Python argparse). Este paquete requiere que se instale un intérprete de Python con los módulos argparse y json (o simplejson).

actualización:

  • docopt: le permite definir una interfaz de línea de comandos con sólo lo que le da una descripción en el formato específico. Es un puerto a .
  • argparser: analizador de argumento de línea de comandos multiplataforma escrito puramente en R sin dependencias externas. Este paquete es útil con el front-end Rscript y facilita convertir un script R en un script ejecutable.
  • minimist: Un enlace a la biblioteca JavaScript minimist. Este módulo implementa las agallas del analizador de argumentos de optimist sin toda la decoración fantasiosa (sin dependencias externas)
  • optigrab: analiza las opciones desde la línea de comandos utilizando una sintaxis simple y limpia. Requiere poca o ninguna especificación y admite opciones cortas y largas, sintaxis de estilo GNU, Java o Microsoft, comandos verbales y más.
+3

Por alguna razón, 'argparse' en realidad * requiere * Python. Me hizo probar 'optparse' first ... – krlmlr

+4

consejos no solicitados: por muy tentador que sea usar el sobresaliente paquete python argparse dentro de R, la dependencia entre idiomas simplemente hace que su script R sea mucho más complejo y frágil. No lo hagas Use una de las opciones de R puro descritas arriba. –

25

La manera más simple es usar commandArgs(). Ejemplo - guardar el código de abajo como "options.R":

options <- commandArgs(trailingOnly = TRUE) 
options 

Run usando "RSCRIPT options.R x y z". Resultado:

[1] "x" "y" "z" 

es decir una lista de 3 elementos, uno por cada argumento.

+7

Esto no es similar al análisis de la opción 'getopt'. –

+0

Tenga en cuenta que respondí esto hace casi 7 años; seguro que hay una mejor manera ahora :) – neilfws

11

Sólo para complementar la respuesta RSCRIPT:

[email protected]:~$ r -e 'print(argv)' flim flam flom 
[1] "flim" "flam" "flom" 
[email protected]:~$ 

Nos limitamos a usar argv en littler. Tuve buena suerte con getopt, el más antiguo de los dos paquetes de análisis disponibles.

Cuestiones relacionadas