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