R language: switch cases on numeric value
r, switch-statement
Solution
According to the `?switch` help page
If the value of EXPR is not a character string it is coerced to integer. If this is between 1 and nargs()-1 then the corresponding element of ... is evaluated and the result returned: thus if the first argument is 3 then the fourth argument is evaluated and returned.
Additionally, the help page provided this example of using a numerical expression
## Numeric EXPR does not allow a default value to be specified
## -- it is always NULL
for(i in c(-1:3, 9)) print(switch(i, 1, 2 , 3, 4))
So when using a numeric switch, only integer values are allowed. Checking that two decimal values are exactly equal isn't always that easy thus it is not allowed. Perhaps there is a better way for you to track this particular condition than using a non-integer numeric value.
Problem
I want to switch cases in numeric value, but I can't find a natural way to do this. Here's what I tried: this leads to syntax error: ``` fun <- function(x) { switch(x, 0.2=0.1, 0.9=0.6) } ``` this one compiles, but is there a better solution? ``` fun <- function(x) { y <- as.character(x) switch(y, "0.2"=0.1, "0.9"=0.6) } ```