r - 如何在 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
和一个向量我将如何选择where 中S = c(1,3,4)
的所有行?我可以用 an 来做到这一点,但我想把它用作管道的一部分。test
all(x==0)
test[apply(test[,S] 1, function(x){all(x==0)},]
%>%
我无法弄清楚filter()
使用列号而不是名称的语法。真实数据有更多的列 (>100) 和行,列号由外部算法提供。
解决方案
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
推荐阅读
- mule - 在 dataweave 中创建具有唯一值的结果数组
- java - 无法在 Spring Security 中解析符号“SamlServerConfiguration”
- r - Inner_join() 将行添加在一起而不是唯一的行
- reactjs - 为什么我的函数不会在使用 reactjs 的弹出窗口中执行 onclick?
- python - Scrapy 输出文件为空白
- java - 突出显示 listView 中的整行
- javascript - 按日期列过滤 backgrid 数据表
- python - 使用 matplotlib 的 X_train、X_test、Y_pred 的多条折线图
- r - 如何制作具有多个条件的 ifelse 语句
- javascript - 是否可以使用 React 将 Spring-animation 应用于 img src 更改?