是否有一个包处理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
(请不要说,“你为什么不把它写自己,这并不难。”在其他语言中,你不必自己动手写两种。:)
怎么样和 EVAL commandArgs一个内置的解决方案吗?
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通常的警告WRT沿用。
从这个无耻地窃取博客文章 。