R语言:根据数值进行开关判断

6
我希望能够在数字值之间切换,但我找不到一个自然的方法来实现。这是我尝试过的代码:

这个代码会导致语法错误:

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个回答

7
根据 ?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))

当使用数字开关时,只允许使用整数值。检查两个十进制值是否完全相等并不总是容易的(详情请参见此处),因此不被允许。也许有一种更好的方式来跟踪此特定条件,而不是使用非整数数字值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接