5

是否有一个包来处理 R 中的命令行选项?

我知道commandArgs,但这太基础了。它的结果基本上等同于argcand argvin C,但我还需要一些东西,就像boost::program_optionsinC++GetOptions::Longin一样perl

特别是,我想提前指定允许哪些选项,并在用户指定其他内容时给出错误消息。

调用将是这样的(使用用户选项 --width=32 --file=foo.txt):

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

或者,如果Rscript使用:

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

(请不要说,“你为什么不自己写呢,没那么难”。在其他语言中你也不必自己写。:)

4

2 回答 2

8

getopt对于 R

于 2009-07-10T15:53:07.160 回答
2

对于内置解决方案,带有eval的commandArgs 怎么样?

测试.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的通常警告当然适用。

无耻地从这篇文中窃取。

于 2010-01-26T11:10:28.230 回答