是否有一个包来处理R中的命令行选项?
我知道commandArgs
,但这太基础了。它的结果基本上相当于argc
中的argv
和C
,但我需要更多的东西,就像boost::program_options
中的C++
一样,或GetOptions::Long
中的perl
。
特别是,我想提前指定允许的选项,并在用户指定其他内容时给出错误消息。
调用将是这样的(使用用户选项--width = 32 --file = foo.txt):
R --vanilla --args --width=32 --file=foo.txt < myscript.R
或者,如果使用Rscript
:
myscript.R --width=32 --file=foo.txt
(请不要说,“你为什么不自己写,不是那么难”。在其他语言中,你也不必自己写。)
答案 0 :(得分:8)
答案 1 :(得分:2)
内置解决方案 commandArgs eval 怎么样?
<强> 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)
并调用它
R CMD BATCH --no-save --no-restore '--args a=1 b=c(2,5,6)' test.R test.out
使用 eval 的常见警告当然适用。
从这blog post无耻地偷走。