switch {base} | R Documentation |
switch
evaluates EXPR
and accordingly chooses one of the
further arguments (in ...
).
switch(EXPR, ...)
EXPR |
an expression evaluating to a number or a character string. |
... |
the list of alternatives, given explicitly. |
If the value of EXPR
is an integer between 1 and
nargs()-1
then the corresponding element of ...
is
evaluated and the result returned.
If EXPR
returns a character string then that string is used to
match the names of the elements in ...
. If there is an exact
match then that element is evaluated and returned if there is one,
otherwise the next element is chosen, e.g.,
switch("cc", a=1, cc=, d=2)
evaluates to 2
.
In the case of no match, if there's a further argument in switch
that one is returned, otherwise NULL
.
centre <- function(x, type) {
switch(type,
mean = mean(x),
median = median(x),
trimmed = mean(x, trim = .1))
}
x <- rcauchy(10)
centre(x, "mean")
centre(x, "median")
centre(x, "trimmed")
ccc <- c("b","QQ","a","A","bb")
for(ch in ccc) cat(ch,":",switch(ch, a=1, b=2:3), "\n")
for(ch in ccc) cat(ch,":",switch(ch, a=,A=1, b=2:3, "Otherwise: last"),"\n")
## Numeric EXPR don't allow an `otherwise':
for(i in c(-1:3,9)) print(switch(i, 1,2,3,4))