如何在 dplyr 过滤器函数中使用列号

Bil*_*nor 5 syntax r filter dplyr tidyverse

如何使用dplyr::filter()带有列号而不是列名称的函数?

例如,我想选择外部选择的列并返回全为零的行。例如,对于这样的数据框

> test
# A tibble: 10 x 4
    C001  C007  C008  C020
   <dbl> <dbl> <dbl> <dbl>
 1    -1    -1     0     0
 2     0     0     0     0
 3     1     1     0     0
 4    -1    -1     0     0
 5     0     0     0    -1
 6     0     0     0     1
 7     0     1     1     0
 8     0     0    -1    -1
 9     1     1     0     0
10     0     0     0     0
Run Code Online (Sandbox Code Playgroud)

和一个向量我如何选择whereS = c(1,3,4)中的所有行?我可以使用 an 来完成此操作,但我想将其用作管道的一部分。testall(x==0)test[apply(test[,S] 1, function(x){all(x==0)},]%>%

我无法弄清楚filter()使用列号而不是名称的语法。真实数据具有更多的列(>100)和行,并且列号由外部算法提供。

A. *_*man 4

filter_at与使用all_vars

library(dplyr)
df %>% filter_at(c(1,3,4), all_vars(.==0))

 C001 C007 C008 C020
1    0    0    0    0
2    0    0    0    0
Run Code Online (Sandbox Code Playgroud)