输入 dplyr::filter 到函数
如何创建一个以任何 dplyr::filter 作为输入并返回满足过滤器的行数的函数?
我已经尝试过这样的事情,但它不起作用:
library(tidyverse)
filter_function <- function(dataset, filter_text) {
dataset %>% filter_text %>% nrow() -> n_rows_satisfy_filter
paste0( "Number of rows satisfying the filter: ", n_rows_satisfy_filter)
}
在这里,我尝试将过滤器作为字符串输入:
filter_function(iris, "filter( Sepal.Length > 5 & Species == 'setosa' )" )
给出错误:
Error in quote(., filter_text) :
2 arguments passed to 'quote' which requires 1
该问题与Using dplyr filter() in programming类似但不是重复的,因为当前问题试图改变整个过滤器,而不仅仅是静态过滤器的输入。