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_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"
谁能帮帮我?
谢谢!
我们可以 paste
将这些值放在一起
library(tidyerse)
df %>%
filter(grepl(str_c("^(", str_c(aList, collapse="|"), ")"), column))
我有一个大数据框 (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"
谁能帮帮我?
谢谢!
我们可以 paste
将这些值放在一起
library(tidyerse)
df %>%
filter(grepl(str_c("^(", str_c(aList, collapse="|"), ")"), column))