在紧要关头,我可以使用“ ...”传递任意数量的参数以进行过滤,但是我发现“ ...”掩盖了函数中形式参数的意图,这可能会使新参数或偶然参数混淆用户。
例如,此函数有效,但我宁愿将“ ...”命名为
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))