R:case_when 和过滤器组合导致未定义的列 select 错误

R: case_when and filter combination resulting in undefined column select error

我无法在 R 中的 dplyr 包的循环中使用 case_whenfilter 函数的组合。

我有以下代码(data 是一个数据框,其中包含名为 kind 的双精度类型的列):

groupkind <- c('club', 'team', 'community')

for(k in groupkind) {
  data_groupkind <- case_when(
    k == 'club' ~ filter(data, kind %in% c(2,4)),
    k == 'team' ~ filter(data, kind %in% c(3,5,6,11)),
    k == 'community' ~ filter(data, kind == 0))
  )
}

当然我在循环中做了很多其他事情,但这是有问题的代码部分。

在 运行 运行这段代码时,我从第一次迭代中直接得到以下错误:
Error in [.data.frame(value[[1]], rep(NA_integer_, m)) : undefined columns selected.

奇怪的是,当我在循环外 运行 filter(data, kind %in% c(2,4)) 时,我没有得到任何错误。当我将 data_groupkind 分配给循环内的任何其他内容时,case_when 函数也能正常工作。

我是不是遗漏了什么,还是 dplyr 的错误?

提前感谢您的回答。

case_when 并非设计为 return dataframe/tibbles。使用 switch 或更简单的 if/else.

library(dplyr)

for(k in groupkind) {
  data_groupkind <- if(k == 'club') filter(data, kind %in% c(2,4)),
                    else if(k == 'team') filter(data, kind %in% c(3,5,6,11)),
                    else if(k == 'community') filter(data, kind == 0)
}