【发布时间】:2021-11-15 22:37:17
【问题描述】:
我有一个加载到 R 中的数据集,并在其上定义了 8 个 dplyr 过滤器。我想详尽地将两个过滤器的所有组合应用于数据集,以检查结果组的大小。目前,我将这些过滤器存储到如下变量中:
filter1 <- data %>% filter(var1 == x)
filter2 <- data %>% filter(var2 == y)
...
filter8 <- data %>% filter(varn == z)
现在我会将这些过滤器存储在一个向量中,这样我就可以在 for 循环中调用应用它们并执行以下操作:
filter_vec <- c(filter1, filter2, ..., filter8)
for (i in filter_vec){
for (j in filter_vec)
filter_insection <- dplyr::intersect(i,j)
print(nrow(filter_intersection)
}
}
但是,这不起作用。结果总是一个长度为 0 的列表对象,表示所有的交集都是空的,而实际上它们不是。
我已经尝试了很多方法来让代码正常工作。首先,我没有使用过滤器,而是尝试从函数中获取过滤功能(如这篇文章中所建议的:Can we combine 2 filters in R?)并改为使用函数向量。在这里我遇到了基本相同的问题(包括“无效的下标类型'list'错误)
此外,我尝试:1) 使用“expr”变量,2) 使用 rlang 解析表达式和 3) 在将它们插入 dplyr 函数之前通过“unlist”从向量传递项目。然而,似乎没有人能做到这一点。因此,我想知道如何从 R 中的向量存储和应用 dplyr 过滤器?
【问题讨论】:
标签: r list dataframe dplyr filtering