切换语句,零索引

时间:2017-12-12 21:48:31

标签: r switch-statement

我想使用switch来获取字符串,但要评估的表达式可以采用的值是0:20。理想情况下,我想要像

这样的东西
switch(val,
       0 = "output0",
       1 = "output1",
       2 = "output2",
       .
       .
       .
       20 = "output20")

但这不起作用,因为val是一个数值。我只能使用if语句来执行此操作,但我更倾向于使用switch语法,因为我已经读过它更快,而且更紧凑。有没有可以做我想要的功能,还是有办法将switch用于我的目的?

2 个答案:

答案 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

然后使用它,因为它读得更好。