commandArgs {R.utils} | R Documentation |
Extract command-line arguments
Description
Provides access to a copy of the command-line arguments supplied when
this R session was invoked. This function is backward compatible with
commandArgs
() of the base package, but adds more
features.
Usage
commandArgs(trailingOnly=FALSE, asValues=FALSE, defaults=NULL, always=NULL, adhoc=FALSE,
unique=FALSE, excludeReserved=FALSE, excludeEnvVars=FALSE, os=NULL, .args=NULL, ...)
Arguments
trailingOnly |
If |
asValues |
If |
defaults |
A |
always |
A |
adhoc |
(ignored if |
unique |
If |
excludeReserved |
If |
excludeEnvVars |
If |
os |
A |
args |
A named |
.args |
|
... |
Passed to |
Value
If asValue
is FALSE
, a character
vector
is returned, which
contains the name of the executable and the non-parsed user-supplied
arguments.
If asValue
is TRUE
, a named list
containing is returned, which
contains the the executable and the parsed user-supplied arguments.
The first returned element is the name of the executable by which
R was invoked. As far as I am aware, the exact form of this element
is platform dependent. It may be the fully qualified name, or simply
the last component (or basename) of the application.
The returned attribute isReserved
is a logical
vector
specifying if the corresponding command-line argument is a reserved
R argument or not.
Backward compatibility
This function should be fully backward compatible with the same function in the base package, except when littler is used (see below).
Compatibility with littler
The littler package provides the r
binary, which parses
user command-line options and assigns them to character vector
argv
in the global environment.
The commandArgs()
of this package recognizes argv
arguments as well.
Coercing to non-character data types
When asValues
is TRUE
, the command-line arguments are
returned as a named list
. By default, the values of these
arguments are character
strings.
However, any command-line argument that share name with one of
the 'always' or 'default' arguments, then its value is coerced to
the corresponding data type (via as
).
This provides a mechanism for specifying data types other than
character
strings.
Furthermore, when asValues
and adhoc
are TRUE
, any
remaining character string command-line arguments are coerced to more
specific data types (via type.convert
), if possible.
Author(s)
Henrik Bengtsson
See Also
For a more user friendly solution, see cmdArgs
().
Internally commandArgs
() is used.
Examples
######################################################################
# Non-parsed command-line arguments
######################################################################
# Display how this instance of R was invoked.
cmd <- paste(commandArgs(), collapse=" ")
cat("How R was invoked:\n");
cat(cmd, "\n")
# Get all arguments
args <- commandArgs()
print(args)
# Get only "private" arguments and not the name of the R executable.
args <- commandArgs(excludeReserved=TRUE)[-1]
print(args)
# Assert backward compatibility
args0 <- base::commandArgs()
args <- commandArgs()
stopifnot(all.equal(args, args0, check.attributes=FALSE))
######################################################################
# Parsed command-line arguments
######################################################################
# Get all arguments as a named list, e.g. if R is started as:
#
# R DATAPATH=../data --args --root="do da" --foo bar --details --a=2
#
# then 'args' below will equal
#
# list(R=NA, DATAPATH="../data" args=TRUE, root="do da",
# foo="bar", details=TRUE, a="2")
args <- commandArgs(asValues=TRUE)
str(args)
# Turn arguments into R variables
args <- commandArgs(asValues=TRUE, excludeReserved=TRUE)[-1]
keys <- attachLocally(args)
cat("Command-line arguments attached to global environment:\n");
print(keys);
str(mget(keys, envir=globalenv()))