switch(EXPR, ...)
EXPR
| an expression evaluating to a number or a character string. |
...
| the list of alternatives, given explicitly. |
switch
evaluates EXPR
. If the value 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 the result returned. 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","b") for(ch in ccc) cat(ch,":",switch(ch, a=1, b=2:3), "\n") for(ch in ccc) cat(ch,":",switch(ch, a=1, b=2:3, "Otherwise: last arg."),"\n") ## Numeric EXPR don't allow an `otherwise': for(i in c(-1:3,9)) print(switch(i, 1,2,3,4))