我正在尝试编写一个用户将指定数据框和a的函数
列名(字符串)并将字符串传递给dplyr
filter
函数。
我确信我应该使用filter_
,但我似乎无法让它按预期行事。
考虑下面的数据框data
。如果我想将它传递给filter
的NSE版本,则完成如下所示
data <- data.frame(column1 = c(-1:10))
data %>% filter(column1 >= 0)
# column1
# 1 0
# 2 1
# 3 2
# 4 3
# 5 4
# 6 5
# 7 6
# 8 7
# 9 8
# 10 9
# 11 10
但是,当我尝试在函数中实现它时,过滤器似乎被忽略,如下所示。
filter_fn <- function(d_in,column){
criteria <- interp(~ as.name(column) >= 0)
d_out = d_in %>% filter_(criteria)
return(d_out)
}
filter_fn(data, "column1")
# column1
# 1 -1
# 2 0
# 3 1
# 4 2
# 5 3
# 6 4
# 7 5
# 8 6
# 9 7
# 10 8
# 11 9
# 12 10
这不是通过函数传递参数的细微差别,因为返回完全相同的结果。
data %>% filter_(interp(~ as.name(column) >= 0))
问题:如何编写具有所需参数的函数,该函数将使用dplyr
过滤数据框?