我正在尝试使用 dplyr 根据动态变量进行过滤。
我发现要让过滤器工作,我需要将变量名括在括号中。但是,如果我将它编程为一个函数,它就不能正常工作。
df_ex <- data.frame(a = 1:10, b = 11:20)
param <- quo(a)
# returns df_ex with column a, only, as expected
df_ex %>%
dplyr::select(!!param)
# returns expected df
df_ex %>%
dplyr::filter((!!param)==5)
# Now for the function
testfun <- function(test_df, filt_var){
filt_var_mod <- quo(filt_var)
test_df %>%
dplyr::filter((!!filt_var_mod)==5)
}
# returns empty df, not as expected
testfun(df_ex, "a")
我想学习为自己找到这些问题的答案,这些问题类型的问题是关于 dplyr 的,所以请随时向我推荐编程小插曲的相关部分