2010-08-08 23 views

risposta

32

Ci sono tre pacchetti su CRAN:

  • getopt: comportamento getopt C-like
  • optparse: un parser riga di comando ispirata di Python optparse biblioteca
  • argparse: una riga di comando opzionale e parser argomento posizionale (ispirato alla libreria argparse di Python). Questo pacchetto richiede l'installazione di un interprete Python con i moduli argparse e json (o simplejson).

Aggiornamento:

  • docopt: consente di definire un'interfaccia a riga di comando da solo dando una descrizione nel formato specifico. È una porta a .
  • argparser: parser di argomenti della riga di comando multipiattaforma scritto esclusivamente in R senza dipendenze esterne. Questo pacchetto è utile con il front-end Rscript e facilita la trasformazione di uno script R in uno script eseguibile.
  • minimist: associazione alla libreria JavaScript minimist. Questo modulo implementa il coraggio dell'argomentatore dell'argomento degli ottimisti senza tutte le fantasiose decorazioni (nessuna dipendenza esterna)
  • optigrab: analizza le opzioni dalla riga di comando utilizzando una sintassi semplice e pulita. Richiede poche o nessuna specifica e supporta opzioni brevi e lunghe, sintassi GNU, Java o Microsoft, comandi verbali e altro.
+3

Per qualche ragione, 'argparse' in realtà * richiede * Python. Mi ha fatto provare prima "optparse" ... – krlmlr

+4

consigli non richiesti: per quanto sia allettante utilizzare l'eccezionale pacchetto python argparse da R, la dipendenza da linguaggio incrociato rende il tuo script R molto più complesso e fragile. Non farlo Utilizzare una delle opzioni pure-R sopra descritte. –

25

Il modo più semplice è utilizzare commandArgs(). Esempio - salva il codice qui sotto come "options.R":

options <- commandArgs(trailingOnly = TRUE) 
options 

Run utilizzando "rscript options.R x y z". Risultato:

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

cioè un elenco di 3 elementi, uno per argomento.

+7

Non è simile all'opzione di opzione 'getopt'. –

+0

Si prega di notare che ho risposto a questo quasi 7 anni fa; c'è sicuramente un modo migliore ora :) – neilfws

11

Proprio per integrare la risposta rscript:

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

Abbiamo appena usiamo argv in littler. Ho avuto fortuna con lo getopt, il più vecchio dei due pacchetti di analisi disponibili.

Problemi correlati