【发布时间】: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]))
【问题讨论】:
我有一个“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]))
【问题讨论】:
我们可以使用sym 转换为符号并使用!! 进行评估
library(dplyr)
d %>%
filter(!! rlang::sym(groups) == filter[i])
# g
#1 C
如果我们传递表达式,那么使用quote或quo会更容易
g1 <- quo(g == "C")
d %>%
filter(!! g1)
# g
#1 C
【讨论】: