我想使用switch
来获取字符串,但要评估的表达式可以采用的值是0:20
。理想情况下,我想要像
switch(val,
0 = "output0",
1 = "output1",
2 = "output2",
.
.
.
20 = "output20")
但这不起作用,因为val
是一个数值。我只能使用if
语句来执行此操作,但我更倾向于使用switch
语法,因为我已经读过它更快,而且更紧凑。有没有可以做我想要的功能,还是有办法将switch
用于我的目的?
答案 0 :(得分:1)
尝试其中任何一种:
val <- "0" # test input
switch(val, "0" = "output0", "1" = "output1")
## [1] "output0"
或
switch(as.numeric(val) + 1, "output0", "output1")
## [1] "output0"
答案 1 :(得分:1)
library(dplyr)
val <- 2
case_when(
val == 0 ~ "output0",
val == 1 ~ "output1",
val == 2 ~ "output2",
val == 20 ~ "output20",
TRUE ~ NA_character_
)
## [[1]] "output2"
我经常做个
OTHERWISE <- TRUE
然后使用它,因为它读得更好。