Question

Y at-il un paquet pour traiter les options de ligne de commande en R?

Je sais commandArgs, mais il est trop basique. Son résultat est essentiellement l'équivalent de argc et argv dans C, mais je avais besoin de quelque chose en plus de cela, tout comme boost::program_options dans C++ ou GetOptions::Long dans perl.

En particulier, je voudrais préciser à l'avance quelles sont les options autorisées et donner un message d'erreur si l'utilisateur spécifie autre chose.

L'appel serait comme celui-ci (avec des options utilisateur --width = 32 --file = toto.txt):

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

ou, si Rscript est utilisé:

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

(S'il vous plaît ne dites pas, vous n'avez pas « pourquoi ne pas vous écrivez vous-même, il est pas difficile » Dans d'autres langues pour écrire vous-même soit:..)

Était-ce utile?

La solution

Autres conseils

Que diriez-vous commandArgs avec eval pour une construite en solution?

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)

et de l'invoquer

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

Les mises en garde habituelles w.r.t en utilisant eval appliquent bien sûr.

Shamelessly volé de cette blog .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top