Learn R Programming

optparse (version 0.9.1)

parse_args: Parse command line options.

Description

parse_args parses command line options using an OptionParser instance for guidance.

Usage

parse_args(object, args = commandArgs(trailingOnly = TRUE), 
        print_help_and_exit=TRUE, positional_arguments = FALSE)

Arguments

object
An OptionParser instance.
args
A character vector containing command line options to be parsed. Default is everything after the Rscript program in the command line. If positional_arguments is TRUE then parse_args will only look for positiona
print_help_and_exit
Whether parse_args should call print_help to print out a usage message and exit the program. Default is TRUE.
positional_arguments
Whether parse_args should look for and return a character vector of positional arguments. Default is FALSE.

Value

  • Returns a list containing option values if positional_arguments is FALSE (the default). Otherwise returns a list with field options containing our option values as well as another field args which contains a vector of positional arguments.

Acknowledgement

A big thanks to Steve Lianoglou for a bug report and patch.

References

Python's optparse library, which this package is based on, is described here: http://docs.python.org/library/optparse.html

See Also

OptionParser print_help OptionParser

Examples

Run this code
# example from vignette
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"),
    make_option("--generator", default="rnorm", 
        help = "Function to generate random deviates [default "%default"]"),
    make_option("--mean", default=0, 
        help="Mean if generator == "rnorm" [default %default]"),
    make_option("--sd", default=1, metavar="standard deviation",
        help="Standard deviation if generator == "rnorm" [default %default]")
    )
parse_args(OptionParser(option_list = option_list), args = c("--sd=3", "--quietly"))
# example from vignette using positional arguments
option_list2 <- list( 
    make_option(c("-n", "--add_numbers"), action="store_true", default=FALSE,
        help="Print line number at the beginning of each line [default]")
    )
parser <- OptionParser(usage = "%prog [options] file", option_list=option_list2)

parse_args(parser, args = c("--add_numbers", "example.txt"), positional_arguments = TRUE)

parse_args(parser, args = c("-add_numbers", "example.txt"), positional_arguments = TRUE)
<testonly>if (require("RUnit")) {
        sort_list <- function(unsorted_list) { 
            for(ii in seq(along=unsorted_list)) {
                if(is.list(unsorted_list[[ii]])) {
                    unsorted_list[[ii]] <- unsorted_list[[ii]][sort(names(unsorted_list[[ii]]))]
                }
            }
            unsorted_list[sort(names(unsorted_list))] 
        }
        checkEquals(sort_list(parse_args(OptionParser(option_list = option_list), 
                                args = c("--sd=3", "--quietly"))),
                    sort_list(list(sd = 3, verbose = FALSE, help = FALSE, 
                        count = 5, mean = 0, generator = "rnorm")))
        checkEquals(sort_list(parse_args(OptionParser(option_list = option_list), 
                            args = character(0), positional_arguments = TRUE)),
                    sort_list(list(options = list(sd = 1, help = FALSE, verbose = TRUE, 
                                    count = 5, mean = 0, generator = "rnorm"),
                                args = character(0))))
        checkEquals(sort_list(parse_args(OptionParser(option_list = option_list), 
                                args = c("-c", "10"))),
                    sort_list(list(sd = 1, help = FALSE, verbose = TRUE, 
                                count = 10, mean = 0, generator = "rnorm")))
        checkEquals(sort_list(parse_args(parser, args = c("--add_numbers", "example.txt"), 
                                positional_arguments = TRUE)),
                    sort_list(list(options = list(add_numbers = TRUE, help = FALSE), 
                                 args = c("example.txt"))))
        checkEquals(sort_list(parse_args(parser, args = c("--add_numbers"), 
                                positional_arguments = TRUE)),
                    sort_list(list(options = list(add_numbers = TRUE, help = FALSE), 
                                 args = character(0))))
        checkEquals(sort_list(parse_args(parser, args = c("-add_numbers", "example.txt"), 
                                    positional_arguments = TRUE)),
                    sort_list(list(options = list(add_numbers = FALSE, help = FALSE), 
                                 args = c("-add_numbers", "example.txt"))))
#       checkException(parse_args(parser, args = c("--add_numbers", "example.txt")))
        checkException(parse_args(parser, args = c("-add_numbers", "example.txt")))
    }</testonly>

Run the code above in your browser using DataLab