match.arg
matches arg
against a table of candidate
values as specified by choices
, where NULL
means to take
the first one.
match.arg(arg, choices, several.ok = FALSE)
a character vector (of length one unless several.ok
is TRUE
) or NULL
.
a character vector of candidate values
logical specifying if arg
should be allowed
to have more than one element.
The unabbreviated version of the exact or unique partial match if
there is one; otherwise, an error is signalled if several.ok
is
false, as per default. When several.ok
is true and more than
one element of arg
has a match, all unabbreviated versions of
matches are returned.
In the one-argument form match.arg(arg)
, the choices are
obtained from a default setting for the formal argument arg
of
the function from which match.arg
was called. (Since default
argument matching will set arg
to choices
, this is
allowed as an exception to the ‘length one unless
several.ok
is TRUE
’ rule, and returns the first
element.)
Matching is done using pmatch
, so arg
may be
abbreviated.
# NOT RUN { require(stats) ## Extends the example for 'switch' center <- function(x, type = c("mean", "median", "trimmed")) { type <- match.arg(type) switch(type, mean = mean(x), median = median(x), trimmed = mean(x, trim = .1)) } x <- rcauchy(10) center(x, "t") # Works center(x, "med") # Works try(center(x, "m")) # Error stopifnot(identical(center(x), center(x, "mean")), identical(center(x, NULL), center(x, "mean")) ) ## Allowing more than one match: match.arg(c("gauss", "rect", "ep"), c("gaussian", "epanechnikov", "rectangular", "triangular"), several.ok = TRUE) # }
Run the code above in your browser using DataCamp Workspace