如何在dplyr过滤器功能中使用列号

如何对列号而不是列名使用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

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

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

hjjhjz 回答:如何在dplyr过滤器功能中使用列号

filter_atall_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
本文链接:https://www.f2er.com/3126443.html

大家都在问