C'è un pacchetto per elaborare le opzioni della riga di comando in R?
-
12-09-2019 - |
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:..)
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 .