如何在dplyr自定义函数中使用灵活的多参数过滤器

时间:2018-12-12 03:18:46

标签: r dplyr

在紧要关头,我可以使用“ ...”传递任意数量的参数以进行过滤,但是我发现“ ...”掩盖了函数中形式参数的意图,这可能会使新参数或偶然参数混淆用户。

例如,此函数有效,但我宁愿将“ ...”命名为  filters就像第二个示例一样(无效):

library(dplyr)

flex_filter <- function(data, ...){

  data %>% 
    dplyr::filter(...)
}

mtcars %>% flex_filter(mpg < 25, am == 1)

理想情况下,我的函数应如下所示。我意识到enquos()不适合传递逻辑参数,但这是我试图做的精神。

flex_filter <- function(data, filters){
  filters <- dplyr::enquos(filters)

  data %>% 
    dplyr::filter(!!!filters)
}

mtcars %>% flex_filter(filters = c(mpg < 25, am == 1))

0 个答案:

没有答案