R package providing a commandline optional argument parser
R
Switch branches/tags
Permalink
Failed to load latest commit information.
R
exec
inst Fix documentation error (closes #23) Jun 12, 2017
man
tests
vignettes
.Rbuildignore
.gitignore
.travis.yml
CONTRIBUTING
COPYING
DESCRIPTION
NAMESPACE
NEWS
README.rst
optparse.Rproj

README.rst

optparse

CRAN Status Badge Build Status Coverage Status

A pure R language command line parser inspired by Python's 'optparse' library to be used with Rscript to write "#!" shebang scripts that accept short and long flag/options.

To install the development version use:

devtools::install_github("optparse", "trevorld")

dependencies

This package depends on the R package getopt.

To run the unit tests you will need the suggested R package testthat and in order to build the vignette you will need the suggested R package knitr which in turn probably requires the system tool pandoc:

sudo apt-get install pandoc

examples

A simple example:

> suppressPackageStartupMessages(library("optparse"))
> parser <- OptionParser()
> parser <- add_option(parser, c("-v", "--verbose"), action="store_true",
>                 default=TRUE, help="Print extra output [default]")
> parser <- add_option(parser, c("-q", "--quietly"), action="store_false",
>                     dest="verbose", help="Print little output")
> parser <- add_option(parser, c("-c", "--count"), type="integer", default=5,
>                 help="Number of random normals to generate [default %default]",
>                 metavar="number")
> parse_args(parser, args = c("--quietly", "--count=15"))
$help
[1] FALSE

$verbose
[1] FALSE

$count
[1] 15

Note that the args argument of parse_args default is commandArgs(trailing=TRUE) so it typically doesn't need to be explicitly set if writing an Rscript.

One can also equivalently make options in a list:

> suppressPackageStartupMessages(library("optparse"))
> option_list <- list(
>     make_option(c("-v", "--verbose"), action="store_true", default=TRUE,
>         help="Print extra output [default]"),
>     make_option(c("-q", "--quietly"), action="store_false",
>         dest="verbose", help="Print little output"),
>     make_option(c("-c", "--count"), type="integer", default=5,
>         help="Number of random normals to generate [default %default]",
>         metavar="number")
>     )
>
> parse_args(OptionParser(option_list=option_list), args = c("--verbose", "--count=11"))
$verbose
[1] TRUE

$count
[1] 11

$help
[1] FALSE

optparse automatically creates a help option:

> parse_args(parser, args = c("--help"))

Usage: %prog [options]


Options:
    -h, --help
            Show this help message and exit

    -v, --verbose
            Print extra output [default]

    -q, --quietly
            Print little output

    -c NUMBER, --count=NUMBER
            Number of random normals to generate [default 5]

optparse has limited positional argument support, other command-line parsers for R such as argparse have richer positional argument support:

> parse_args(parser, args = c("-v", "-c25", "75", "22"), positional_arguments = TRUE)

$options
$options$help
[1] FALSE

$options$verbose
[1] TRUE

$options$count
[1] 5


$args
[1] "75"   "22"

The function parse_args2 wraps parse_args while setting positional_arguments=TRUE and convert_hyphens_to_underscores=TRUE:

> parse_args2(parser, args = c("-v", "-c25", "75", "22"))

$options
$options$help
[1] FALSE

$options$verbose
[1] TRUE

$options$count
[1] 5


$args
[1] "75"   "22"