

   SSeelleecctt OOnnee ooff aa LLiisstt ooff AAlltteerrnnaattiivveess

        switch(EXPR, ...)

   AArrgguummeennttss::

       EXPR: an expression evaluating to a number or a charac-
             ter string.

        ...: the list of alternatives, given explicitly.

   DDeessccrriippttiioonn::

        `switch' evaluates `EXPR'.  If the value is an integer
        between 1 and `nargs()-1' then the corresponding ele-
        ment 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 evalu-
        ated and the result returned.  In the case of no match,
        if there's a further argument in `switch(..)'  that one
        is returned, otherwise `NULL'.

   EExxaammpplleess::

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

