将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
这个问题与在编程中使用dplyr filter()类似,但不是重复的,因为当前的问题试图改变整个过滤器,而不仅仅是静态过滤器的输入。
dataset %>% eval(parse_expr(filter_text))
,其中filter_text类似于filter( Sepal.Length > 5 & Species == 'setosa' )
? - Rasmus Larsen