R 当要筛选的列名和值都在变量中时,基于列筛选数据帧的行
对于下面的场景,我得到一个空数据帧R 当要筛选的列名和值都在变量中时,基于列筛选数据帧的行,r,dplyr,R,Dplyr,对于下面的场景,我得到一个空数据帧 D = data.frame(X = c("x1", "x2", "x3")) vals = c("x1", "x2") col = "X" dplyr::filter(D, col %in% vals) 但是按照下面的方法做是可行的 dplyr::filter(D, X %in% vals) 我不能硬编码列的名称,也不能硬编码要过滤的值。我需要第一个场景来工作 我们可以转换为symbol并进行评估(!!) 或者另一个选项是filter\u at D
D = data.frame(X = c("x1", "x2", "x3"))
vals = c("x1", "x2")
col = "X"
dplyr::filter(D, col %in% vals)
但是按照下面的方法做是可行的
dplyr::filter(D, X %in% vals)
我不能硬编码列的名称,也不能硬编码要过滤的值。我需要第一个场景来工作 我们可以转换为
sym
bol并进行评估(!!
)
或者另一个选项是
filter\u at
D %>%
filter_at(vars(col), any_vars(. %in% vals))
@tmfmnk问题略有不同,在这个问题中,我们试图过滤多个值上的行。但这两个问题的解决方案都应该通过在%中使用
==
或%更改筛选来实现?当然,它是有效的。您可以在%VAL中执行filter(D,!!as.name(col)%
或filter(D,UQ(as.name(col))%in%VAL)
。
D %>%
filter_at(vars(col), any_vars(. %in% vals))