根据列表过滤数据框-但是包含

时间:2019-09-02 19:58:18

标签: r

我想使用文本值列表来过滤数据框,但是我希望该列表值成为包含对象。

我也希望不区分大小写。

感谢您的帮助。

代码:

a = c("Louis","Frank")
MyFilteredData <- MyData[MyData$Singer %in% a,]

数据示例:

Singer
"Frank Sinatra"
"Louis Armstrong"
"Bing Crosby"

我的过滤器的结果将是:

"Frank Sinatra"
"Louis Armstrong"

1 个答案:

答案 0 :(得分:1)

在这里,我们可以使用grep,因为匹配是局部的

MyData[grep(paste0("\\b(", paste(a, collapse="|"), ")\\b"), 
          MyData$Singer),, drop = FALSE]

tidyverse

中的一个选项
library(dplyr)
library(stringr)
MyData %>%
     filter(str_detect(Singer, str_c(a, collapse="|")))