Domanda

C'è un pacchetto per elaborare le opzioni della riga di comando in R?

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

In particolare, vorrei specificare in anticipo quali opzioni sono consentiti e dare 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 si utilizza Rscript:

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

(Si prega di non dire: "Perché non scrivere da soli, non è così difficile" in altre lingue non devi scrivere da soli o:..)

È stato utile?

Soluzione

Altri suggerimenti

Come su commandArgs con eval 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 per invocarlo

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

I soliti caveat w.r.t utilizzando eval si applicano naturalmente.

spudoratamente rubato da questo post sul blog .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top