Parsing command line arguments in R scripts

2019-01-07 06:01发布

Is there any convenient way to automatically parse command line arguments passed to R scripts?

Something like perl's Getopt::Long?

4条回答
不美不萌又怎样
2楼-- · 2019-01-07 06:33

Just to complement the Rscript answer:

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

We just use argv in littler. I had good luck with getopt, the older of the two available parsing packages.

查看更多
趁早两清
3楼-- · 2019-01-07 06:34

The simplest way is to use commandArgs(). Example - save the code below as "options.R":

options <- commandArgs(trailingOnly = TRUE)
options

Run using "Rscript options.R x y z". Result:

[1] "x" "y" "z"

i.e. a list of 3 elements, one per argument.

查看更多
手持菜刀,她持情操
4楼-- · 2019-01-07 06:36

There are three packages on CRAN:

  • getopt: C-like getopt behavior
  • optparse: a command line parser inspired by Python's optparse library
  • argparse: a command line optional and positional argument parser (inspired by Python's argparse library). This package requires that a Python interpreter be installed with the argparse and json (or simplejson) modules.

Update:

  • docopt: lets you define a command line interface by just giving it a description in the specific format. It is a port a docopt.py.
  • argparser: cross-platform command-line argument parser written purely in R with no external dependencies. This package is useful with the Rscript front-end and facilitates turning an R script into an executable script.
  • minimist: A binding to the minimist JavaScript library. This module implements the guts of optimist's argument parser without all the fanciful decoration (no external dependencies)
  • optigrab: parse options from the command-line using a simple, clean syntax. It requires little or no specification and supports short and long options, GNU-, Java- or Microsoft- style syntaxes, verb commands and more.
查看更多
SAY GOODBYE
5楼-- · 2019-01-07 06:48

May I introduce ArgumentParser in Xmisc package? It is a command line parser inspired by Python's argparse but it is Python-free.

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

enter image description here

查看更多
登录 后发表回答