我想创建一个应用于数据框的过滤器列表。就像是:
filters = list(cyl=4, am=1)
然后将其应用于 'mtcars' 数据框,以获取 cyl=4 和 am=1 的记录。我可以做这个:
filter_(mtcars,
lazyeval::interp(~ val == var, val = as.name(names(filters[1])),
var = filters[[1]]))
但这只会选择过滤器列表中的第一个条目。
应用所有过滤器的惯用方法是什么?
(我正在尝试创建一个有点通用的函数,它可以接受一个数据框和一个标准集,并将输出转换。现在,平等对于标准来说很好,但更通用的习语会更好)
最佳答案
将过滤器定义为
filter1 <- ~(cyl==4 & am==1)
或者
filter1 <- "cyl==4 & am==1"
或者
library(lazyeval)
filter1 <- lazy(cyl==4 & am==1)
并用作
mtcars %>% filter_(filter1)
函数示例:
get_cars_with_filter <- function(my_filter) {
mtcars %>% filter_(lazy(my_filter))
}
get_cars_with_filter(cyl==4 & am == 1)
关于r - 如何以编程方式提供要通过 dplyr 和 filter_ 应用的过滤器列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29543527/