我的数据框很大(df
),我想通过搜索列(df$column
)和列表(aList
)之间的部分匹配来进行过滤。
aList <- c("ID1", "ID2", "ID3")
我用于过滤的数据框中的变量包含的值可能仅以列表中的值开头。例如:ID1_23
或ID2AV
。
然后,我想使用grepl
或类似方法在我的数据框列中搜索以aList
中的值开头的任何值。当仅搜索单个值时,我处理这种方式的方法是:
library(dplyr)
newDf <- df %>% filter(grepl("^ID1", column))
然后我的问题出现在如何使用列表中的所有值进行相似处理。我尝试了以下方法:
dummyList <- c()
for (i in 1:length(aList)){
list1 <- dplyr::filter(grepl(paste("\"^", aList[i], "\""), df$column))
rbind(list1, dummyList)
}
为我提供了以下错误代码:
Error in UseMthod("filter_") :
no applicable method for ´filter_´ applied to an obecjt of class "logical"
有人可以帮助我吗?
谢谢!
答案 0 :(得分:1)
我们可以一起paste
个值
library(tidyerse)
df %>%
filter(grepl(str_c("^(", str_c(aList, collapse="|"), ")"), column))