我有
4 5 6 7
1 3 3 3 3
2 1 2 2 1
3 2 1 1 NA
4 2 7 1 NA
5 1 1 1 1
我想在第1列到第4列中使用2或3过滤行,所以我只得到行1,2,4
我试过
df1%>%filter_at(vars(4:7), all_vars(c(2,3)) -> df2
返回
Error in filter_impl(.data, quo) : Result must have length 413, not 2
和
filter(d1[4:7]%in%c(1,3))
返回
Error in filter_impl(.data, quo) : Result must have length 413, not 4
我想避免使用
df1%>%filter(rowname1%in%c(1,3)|rowname1%in%c(1,3)| ...)
我没有得到语法。感谢
答案 0 :(得分:1)
我们可以使用any_vars
和%in%
来完成此任务。
library(dplyr)
df1 %>% filter_at(vars(1:4), any_vars(. %in% c(2, 3)))
# X4 X5 X6 X7
# 1 3 3 3 3
# 2 1 2 2 1
# 3 2 1 1 NA
# 4 2 7 1 NA
或将==
与|
一起使用。
df1 %>% filter_at(vars(1:4), any_vars(. == 2 | . == 3))
# X4 X5 X6 X7
# 1 3 3 3 3
# 2 1 2 2 1
# 3 2 1 1 NA
# 4 2 7 1 NA
数据强>
df1 <- read.table(text = " 4 5 6 7
1 3 3 3 3
2 1 2 2 1
3 2 1 1 NA
4 2 7 1 NA
5 1 1 1 1",
header = TRUE, stringsAsFactors = FALSE)