好的,这是我想象中的 data.frame
,名为 data
A1 A2 A3 A4 A5 A6
1 2 45 35 33 38
5 1 23 33 58 47
18 26 78 15 5 6
我想要做的是选择在任何列中具有 1 或 33 的所有行
所以我最初的想法是编写如下代码
a <- paste0("A",1:6)
num <- c("1","33")
data <- data %>%
filter(a %in% num)
直觉上我虽然这可行,但我不断收到错误结果必须有长度_ not _。
有什么方法可以解决这个问题或使用不同的解决方案?谢谢!
最佳答案
我们可以使用filter_all
library(dplyr)
data %>%
filter_all(any_vars(. %in% c(1, 33)))
# A1 A2 A3 A4 A5 A6
#1 1 2 45 35 33 38
#2 5 1 23 33 58 47
如果我们需要对列的子集执行此操作,请使用 filter_at
并在 vars
中指定列索引或名称
data %>%
filter_at(vars(matches("A\\d+")), any_vars(. %in% c(1, 33)))
vars
也可以接受对象
a <- paste0("A", 1:6)
vals <- c(1, 33)
data %>%
filter_at(vars(a), any_vars(. %in% vals))
关于r - 使用 %in% 通过列表过滤多列并在 R 中过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48503764/