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))