2009-07-10 22 views
5

Esiste un pacchetto per elaborare le opzioni della riga di comando in R?Esiste un pacchetto per elaborare le opzioni della riga di comando in R?

Lo so commandArgs, ma è troppo semplice. Il risultato è sostanzialmente equivalente a argc e argv in C, ma avrei bisogno di qualcosa in più, proprio come boost::program_options in C++ o GetOptions::Long in perl.

In particolare, vorrei specificare in anticipo quali opzioni sono consentite e fornire un messaggio di errore se l'utente specifica qualcos'altro.

La chiamata sarebbe come questo (con opzioni utente --width = 32 --file = foo.txt):

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

o, se Rscript viene utilizzato:

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

(Per favore non dire "perché non lo scrivi tu stesso, non è così difficile". In altre lingue non devi scriverlo neanche tu :) :)

risposta

8
+0

Ottimo! Peccato che non faccia parte della distribuzione R (almeno non in R 2.8.1). – Frank

2

Come su commandArgsconeval per un costruito in soluzione?

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 richiamarla

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

I normali avvertimenti w.r.t utilizzando eval valgono naturalmente.

rubato senza vergogna da questo blog post.

Problemi correlati