【发布时间】:2018-02-28 16:42:32
【问题描述】:
我想使用 dplyr 中的 filter() 函数和动态变量名:
data(mtcars)
var1 <- 'hp'
mtcars %>% filter(hp == 110) # works
mtcars %>% filter(var1 == 110) # doesn't works
使用新版本的 dplyr 包,似乎可以做到这一点(不使用lazyeval 包),但我无法做到这一点.. 一些帮助将不胜感激。
没有成功的测试:
mtcars %>% filter(!!var1 == 110)
mtcars %>% filter(!!!var1 == 110)
mtcars %>% filter((!!var1) == 110)
mtcars %>% filter(quo(var1) == 110)
mtcars %>% filter(~var1 == 110)
mtcars %>% filter(quo(~var1) == 110)
var2 <- enquo(var1)
使用 select() 和 mutate() 成功测试:
mtcars %>% select(!!!var1) %>% head() # works
【问题讨论】:
-
您是否考虑过改用seplyr?
-
我第一次听说“seplyr”。我去看看,谢谢。