Y at-il un paquet pour traiter les options de ligne de commande en R?
-
12-09-2019 - |
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:..)
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 .