我试图在数据帧上应用连续的过滤器,而不事先知道过滤器的数量或它们的参数.参数存储在一个列表中.使用1或2个过滤器,我可以用purrr完成.
例如,使用2个过滤器:
require(tidyverse)
data("iris")
head(iris)
f2 <- list("Species" = "virginica", "Sepal.Length" = c(5.8, 6.3))
iris_f2 <- map2_df(.x = f2[[1]],
.y = f2[[2]],
.f = ~{
iris %>%
filter(get(names(f2)[1]) %in% .x,
get(names(f2)[2]) %in% .y)
})
# With 3 filters or more, I am completely stuck !
f3 <- list("Species" = "virginica", "Sepal.Length" = c(5.8, 6.3), "Sepal.Width" = 2.7)
我想概括一下我的代码,这样它就可以在一个列表中应用带有n个参数的连续过滤器(n可以是1,或者像我的示例中那样是2,或者更多).
理想情况下,我想知道如何使用purrr,但我也对基于循环的解决方案感兴趣.