在R脚本中parsing命令行参数
有没有方便的方法来自动分析传递给R脚本的命令行参数?
就像perl的Getopt::Long
?
CRAN上有三个软件包:
- getopt :类似于getopt的行为
- optparse :一个由Python的optparse库启发的命令行parsing器
- argparse :一个命令行可选和位置参数parsing器(受Python的argparse库启发)。 这个包要求Python解释器和
argparse
和json
(或者simplejson
)模块一起安装。
更新 :
- docopt :让你定义一个命令行界面,只要给它一个特定格式的描述。 它是一个docopt.py的端口。
- argparser :纯粹在R中编写的跨平台的命令行参数parsing器,没有外部依赖关系。 这个包在Rscript前端很有用,并且有助于将R脚本转换为可执行脚本。
- minimist :与最小化JavaScript库的绑定。 该模块实现了乐观主义者参数parsing器的胆量,没有任何幻想的装饰(没有外部依赖)
- optigrab :使用简单,干净的语法从命令行parsing选项。 它只需要很less或没有规范,并支持短期和长期选项,GNU,Java或Microsoft风格的语法,动词命令等等。
最简单的方法是使用commandArgs()。 例子 – 将下面的代码保存为“options.R”:
options <- commandArgs(trailingOnly = TRUE) options
运行使用“Rscript options.R xyz”。 结果:
[1] "x" "y" "z"
即 3个元素的列表,每个参数一个。
只是为了补充Rscript的答案:
edd@max:~$ r -e 'print(argv)' flim flam flom [1] "flim" "flam" "flom" edd@max:~$
我们只是在小问题上使用argv
。 getopt是两个可用的parsing包中较老的,所以我运气不错。
我可以在Xmisc包中引入ArgumentParser
吗? 这是一个由Python的argparse
启发的命令行parsing器,但它是无Python的。
http://cran.r-project.org/web/packages/Xmisc/vignettes/Xmisc-ArgumentParser.pdf