Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 当要筛选的列名和值都在变量中时,基于列筛选数据帧的行_R_Dplyr - Fatal编程技术网

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))