R语言:在数值上切换案例

时间:2014-07-14 20:51:21

标签: r switch-statement

我想用数值切换个案,但我找不到自然的方法来做到这一点。这就是我的尝试:

这会导致语法错误:

fun <- function(x) {
    switch(x,
           0.2=0.1,
           0.9=0.6)
}

这个编译,但有更好的解决方案吗?

fun <- function(x) {
    y <- as.character(x)
    switch(y,
           "0.2"=0.1,
           "0.9"=0.6)
}

1 个答案:

答案 0 :(得分:5)

根据?switch帮助页面

  

如果EXPR的值不是字符串,则强制为整数。如果它介于1和nargs() - 1之间,那么将评估...的相应元素并返回结果:因此,如果第一个参数为3,则计算并返回第四个参数。

此外,帮助页面提供了使用数值表达式

的示例
## 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))

因此,使用数字开关时,只允许使用整数值。检查两个十进制值是否完全相等isn't always that easy因此不允许。也许有一种更好的方法来跟踪这个特定条件,而不是使用非整数数值。