是否有一个包处理R中的命令行选项?(Is there a package to process co

2019-06-25 14:26发布

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

我知道commandArgs ,但它太基本。 其结果是基本等效argcargvC ,但我需要最重要的是什么东西,就像boost::program_optionsC++GetOptions::Longperl

我特别想预先指定的选项,允许什么,如果用户指定别的东西给出错误信息。

该呼叫会是这样(与用户选项--width = 32 --file = foo.txt的):

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

或者,如果Rscript使用:

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

(请不要说,“你为什么不把它写自己,这并不难。”在其他语言中,你不必自己动手写两种。:)

Answer 1:

getopt对于R



Answer 2:

怎么样 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沿用。

从这个无耻地窃取博客文章 。



文章来源: Is there a package to process command line options in R?