gpt4 book ai didi

r - 如何以编程方式提供要通过 dplyr 和 filter_ 应用的过滤器列表

转载 作者:行者123 更新时间:2023-12-04 10:45:33 26 4
gpt4 key购买 nike

我想创建一个应用于数据框的过滤器列表。就像是:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com