在R脚本中解析命令行参数

Dav*_*d B 42 parsing r command-line-arguments

有没有方便的方法来自动解析传递给R脚本的命令行参数?

像perl这样的东西Getopt::Long

rcs*_*rcs 44

CRAN上有三个包:

  • getopt:C-like getopt行为
  • optparse:一个受Python的optparse库启发的命令行解析器
  • argparse:命令行可选和位置参数解析器(受Python的argparse库启发).此程序包要求使用argparsejson(或simplejson)模块安装Python解释器.

更新:

  • docopt:允许您通过为其指定特定格式的描述来定义命令行界面.它是一个docopt.py端口.
  • argparser:纯粹在R中编写的跨平台命令行参数解析器,没有外部依赖关系.此包对Rscript前端很有用,有助于将R脚本转换为可执行脚本.
  • minimist:对最小化JavaScript库的绑定.这个模块实现了乐观主义者的参数解析器的胆量,没有所有的幻想装饰(没有外部依赖)
  • optigrab:使用简单,干净的语法从命令行解析选项.它几乎不需要任何规范,并支持短期和长期选项,GNU,Java或Microsoft风格的语法,动词命令等.

  • 未经请求的建议 - 就像在R中使用优秀的python argparse包一样诱人,跨语言依赖只会使你的R脚本变得更加复杂和脆弱.不要这样做.使用上述纯R选项之一. (9认同)
  • 出于某种原因,`argparse`实际上*需要*Python.先让我试试`optparse` (3认同)

nei*_*fws 29

最简单的方法是使用commandArgs().示例 - 将下面的代码保存为"options.R":

options <- commandArgs(trailingOnly = TRUE)
options
Run Code Online (Sandbox Code Playgroud)

使用"Rscript options.R xy z"运行.结果:

[1] "x" "y" "z"
Run Code Online (Sandbox Code Playgroud)

3个元素的列表,每个参数一个.

  • 这与`getopt`选项解析不相似. (7认同)
  • 请注意,我在大约 7 年前回答了这个问题;现在肯定会有更好的方法:) (2认同)

Dir*_*tel 11

只是为了补充Rscript答案:

edd@max:~$ r -e 'print(argv)' flim flam flom
[1] "flim" "flam" "flom"
edd@max:~$ 
Run Code Online (Sandbox Code Playgroud)

我们只是用argv利特勒.我好运了getopt,两个可用的解析包中较旧的一个.


xb.*_*xb. 5

我可以介绍ArgumentParserXmisc包?它是一个受Python启发的命令行解析器,argparse但它不支持Python.

http://cran.r-project.org/web/packages/Xmisc/vignettes/Xmisc-ArgumentParser.pdf

在此输入图像描述