【问题标题】:tidyeval way to programatically send values to filter以编程方式将值发送到过滤器的 tidyeval 方式
【发布时间】:2018-08-03 05:42:06
【问题描述】:

接上一个较早的线程,(Use string as filter in dplyr?), 新的 答案会是什么,因为filter_ 已被弃用。

有没有办法在 中使用字符串变量作为过滤器参数?例如:

filter(iris,Sepal.Length > 6)

将被替换为

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

【问题讨论】:

    标签: tidyeval dplyr r dplyr tidyeval


    【解决方案1】:

    也许:

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

    但据我了解 tidyeval 哲学,字符串形式的代码是不受欢迎的,首先不应该有 string &lt;- 'Sepal.Length &gt; 6'

    也许是:

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

    【讨论】:

    • expr 正是我想要的!
    猜你喜欢
    • 1970-01-01
    • 2011-07-12
    • 2021-11-19
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多