R:通过使用 "grepl" 匹配列表中的部分来过滤数据框

R: Filtering a data frame by matching partial from a list using "grepl"

我有一个大数据框 (df) 我想通过搜索列 (df$column) 和列表 (aList) 之间的部分匹配来进行过滤。

aList <- c("ID1", "ID2", "ID3")

我用于过滤的数据框中的变量包含可能仅以列表中的值开头的值。示例:ID1_23ID2AV.

然后我想使用 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"

谁能帮帮我?

谢谢!

我们可以 paste 将这些值放在一起

library(tidyerse)
df %>% 
      filter(grepl(str_c("^(", str_c(aList,  collapse="|"), ")"), column))