web-dev-qa-db-fra.com

Analyse des arguments de ligne de commande dans les scripts R

Existe-t-il un moyen pratique d'analyser automatiquement les arguments de ligne de commande passés aux scripts R?

Quelque chose comme Perl's Getopt::Long?

44
David B

Il y a trois packages sur CRAN:

  • getopt : Comportement getopt de type C
  • optparse : un analyseur de ligne de commande inspiré de la bibliothèque optparse de Python
  • argparse : un analyseur d'arguments optionnel et positionnel en ligne de commande (inspiré de la bibliothèque argparse de Python). Ce package nécessite qu'un interpréteur Python soit installé avec les modules argparse et json (ou simplejson).

Mise à jour :

  • docopt : vous permet de définir une interface de ligne de commande en lui donnant simplement une description dans le format spécifique. C'est un port a docopt.py .
  • argparser : analyseur d'arguments de ligne de commande multiplateforme écrit uniquement en R sans dépendances externes. Ce package est utile avec le frontal Rscript et facilite la transformation d'un script R en script exécutable.
  • minimist : une liaison à la bibliothèque JavaScript minimist. Ce module implémente les tripes de l'analyseur d'arguments optimiste sans toute la décoration fantaisiste (pas de dépendances externes)
  • optigrab : analyser les options de la ligne de commande en utilisant une syntaxe simple et propre. Il nécessite peu ou pas de spécifications et prend en charge les options courtes et longues, les syntaxes de style GNU, Java ou Microsoft, les commandes verbales et plus encore.
45
rcs

Le moyen le plus simple consiste à utiliser commandArgs (). Exemple - enregistrez le code ci-dessous sous "options.R":

options <- commandArgs(trailingOnly = TRUE)
options

Exécutez en utilisant "Options Rscript.R x y z". Résultat:

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

c'est-à-dire une liste de 3 éléments, un par argument.

30
neilfws

Pour compléter la réponse Rscript:

edd@max:~$ r -e 'print(argv)' flim flam flom
[1] "flim" "flam" "flom"
edd@max:~$ 

Nous utilisons simplement argv dans littler . J'ai eu de la chance avec getopt , le plus ancien des deux packages d'analyse disponibles.

11
Dirk Eddelbuettel

Puis-je introduire ArgumentParser dans Xmisc package? C'est un analyseur de ligne de commande inspiré du argparse de Python mais il est sans Python.

http://cran.r-project.org/web/packages/Xmisc/vignettes/Xmisc-ArgumentParser.pdf

enter image description here

5
xb.