通过tidyeval以编程方式将值发送到过滤器的方法

时间:2018-08-03 05:42:06

标签: r dplyr tidyeval

选择较早的线程(Use string as filter in dplyr?), 随着filter_被弃用,新的​​答案是什么。

是否可以使用字符串变量作为中的过滤器参数?例如:

filter(iris,Sepal.Length > 6)

将替换为

string <- 'Sepal.Length > 6'
filter(iris,string)

1 个答案:

答案 0 :(得分:3)

也许:

filter(iris, !! rlang::parse_expr(string))

但是据我所知,tidyeval的哲学是将字符串编码当作首字母缩写,因此一开始不应该string <- 'Sepal.Length > 6'

也许相反:

condition <- expr(Sepal.Length > 6)
filter(iris, !! condition)