【问题标题】:dplyr filter_ not returning datadplyr filter_ 不返回数据
【发布时间】:2018-04-13 17:17:20
【问题描述】:

我有一个“d”数据框,我想动态过滤。我想过滤“g”列以观察“C”。知道如何让它工作吗?

d =data.frame(g = c("C","A"))
library(dplyr)
 groups= c("g")
 filter=c("C","A")
 i=1
 d %>% dplyr::filter_(paste0( groups[i],"==",filter[i]))

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    我们可以使用sym 转换为符号并使用!! 进行评估

    library(dplyr)
    d %>% 
      filter(!! rlang::sym(groups) == filter[i])
    #  g
    #1 C
    

    如果我们传递表达式,那么使用quotequo会更容易

    g1 <- quo(g == "C")
    d %>%
      filter(!! g1)
    #  g
    #1 C
    

    【讨论】:

    • 为什么toption 2 在这里工作stackoverflow.com/questions/27197617/…。它似乎不起作用。
    • @user3022875 你引用的答案是基于旧语法,现在大部分都被替换了
    • 嗯,在这个玩具示例中有效,但不适用于我的真实数据框
    • @user3022875 如果你在谈论这篇文章中的答案,那么你可能需要展示一个更好的例子
    猜你喜欢
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 2021-09-04
    相关资源
    最近更新 更多