optparse: Command line optional argument parser

CRAN Status Badge R-CMD-check Coverage Status RStudio CRAN mirror downloads Dependencies

optparse hex sticker

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 last version released on CRAN use the following command:

install.packages("optparse")

To install the development version use the following command:

install.packages("remotes")
remotes::install_github("trevorld/r-optparse")

examples

A simple example:

library("optparse")
parser <- OptionParser() |>
    add_option(c("-v", "--verbose"), action = "store_true",
               default = TRUE, help = "Print extra output [default]") |>
    add_option(c("-q", "--quietly"), action = "store_false",
               dest = "verbose", help = "Print little output") |>
    add_option(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.

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]


Error in parse_args(parser, args = c("--help")) : help requested

Note by default when optparse::parse_args() sees a --help flag it will first print out a usage message and then either throw an error in interactive use or call quit() in non-interactive use (i.e. when used within an Rscript called by a shell). To disable the error/quit set print_help_and_exit = FALSE in parse_args() and to simply print out the usage string one can also use the function print_usage().

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("-vc", "25", "75", "22"), positional_arguments = TRUE)

## $options
## $options$help
## [1] FALSE
## 
## $options$verbose
## [1] TRUE
## 
## $options$count
## [1] 25
## 
## 
## $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("-vc", "25", "75", "22"))

## $options
## $options$help
## [1] FALSE
## 
## $options$verbose
## [1] TRUE
## 
## $options$count
## [1] 25
## 
## 
## $args
## [1] "75" "22"

other R packages