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

use*_*014 3 r switch-statement

我想用数值切换案例,但我找不到一种自然的方法来做到这一点.这是我试过的:

这会导致语法错误:

fun <- function(x) {
    switch(x,
           0.2=0.1,
           0.9=0.6)
}
Run Code Online (Sandbox Code Playgroud)

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

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

MrF*_*ick 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))
Run Code Online (Sandbox Code Playgroud)

因此,使用数字开关时,只允许整数值.检查两个十进制值是否完全相等并不总是那么容易,因此不允许这样做.也许有一种更好的方法来跟踪这个特定条件,而不是使用非整数数值.