R:case_when 和过滤器组合导致未定义的列 select 错误
R: case_when and filter combination resulting in undefined column select error
我无法在 R 中的 dplyr
包的循环中使用 case_when
和 filter
函数的组合。
我有以下代码(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)
}
我无法在 R 中的 dplyr
包的循环中使用 case_when
和 filter
函数的组合。
我有以下代码(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)
}