如何从 case_when() 返回多个值或一个 tibble?

Pet*_*e K 3 r switch-statement tidyverse

我找不到返回多个值(列)或仅返回一个小标题的方法case_when()

input <- tibble(a = c(1, 2, 3))

input %>%
  mutate(
    case =
      case_when(
        a == 1 ~ tibble(x = "case1", y = "c1"),
        a == 2 ~ tibble(x = "case2", y = "c2"),
        a == 3 ~ tibble(x = "case3", y = "c3")
        )
    )
Run Code Online (Sandbox Code Playgroud)

如何根据某些正则表达式条件设置多个参数?

akr*_*run 5

我们可以返回一个list列,因为mutate期望常规列是与原始数据的行数相同的vectorlength

\n
input %>%\n  mutate(\n  case =\n    case_when(\n      a == 1 ~ list(tibble(x = "case1", y = "c1")),\n      a == 2 ~ list(tibble(x = "case2", y = "c2")),\n     a == 3 ~ list(tibble(x = "case3", y = "c3"))\n     )\n )\n
Run Code Online (Sandbox Code Playgroud)\n

-输出

\n
# A tibble: 3 x 2\n#      a case            \n#  <dbl> <list>          \n#1     1 <tibble [1 \xc3\x97 2]>\n#2     2 <tibble [1 \xc3\x97 2]>\n#3     3 <tibble [1 \xc3\x97 2]>\n
Run Code Online (Sandbox Code Playgroud)\n