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

Posted

技术标签:

【中文标题】是否有一个包来处理 R 中的命令行选项?【英文标题】:Is there a package to process command line options in R? 【发布时间】:2010-11-09 18:27:39 【问题描述】:

在 R 中是否有处理命令行选项的包?

我知道commandArgs,但它太基础了。它的结果基本上相当于C 中的argcargv,但我还需要一些东西,就像C++ 中的boost::program_optionsperl 中的GetOptions::Long

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

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

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

或者,如果使用Rscript

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

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

【问题讨论】:

【参考方案1】:

getopt for R

【讨论】:

太棒了!太糟糕了,它不是 R 发行版的一部分(至少不在 R 2.8.1 中)。【参考方案2】:

commandArgs with 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盗取。

【讨论】:

以上是关于是否有一个包来处理 R 中的命令行选项?的主要内容,如果未能解决你的问题,请参考以下文章

maven:如何通过命令行选项跳过某些项目中的测试?

CCF-命令行选项(模拟)

是否有任何XSLT处理命令行工具? [关闭]

CCF 201403-3 命令行选项

CSP 命令行选项(201403-3)

为啥cad安装会出现命令行语法错误