match.arg {base} | R Documentation |
match.arg
matches a character arg
against a table of
candidate values as specified by choices
.
match.arg(arg, choices, several.ok = FALSE)
arg |
a character vector (of length one unless |
choices |
a character vector of candidate values, often missing, see ‘Details’. |
several.ok |
logical specifying if |
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 and the empty string (""
) never matches, not even
itself, see pmatch
.
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 (at least)
one element of arg
has a match, all unabbreviated versions of
matches are returned.
The error messages given are liable to change and did so in R 4.2.0. Do not test them in packages.
pmatch
,
match.fun
,
match.call
.
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 'arg' and hence more than one match:
match.arg(c("gauss", "rect", "ep"),
c("gaussian", "epanechnikov", "rectangular", "triangular"),
several.ok = TRUE)
match.arg(c("a", ""), c("", NA, "bb", "abc"), several.ok=TRUE) # |--> "abc"