regex 在文本列中搜索整个单词的任何示例

r3i60tvu  于 2023-08-08  发布在  其他
关注(0)|答案(5)|浏览(84)

假设我有以下

text <- c('flight cancelled','coach test') 
searching_for<- c('flight','coach')

字符串
我想找到任何一个例子,其中一个完整的词在“searching_for”是在“text”。我使用了:

as.integer(str_detect(searching_for, text))


目前,它无法检测到“flight”一词出现在“flight cancelled”文本中。
此外,我还希望能够识别任何示例,其中“searching_for”中的至少一个单词出现在“text”中。
举个例子

searching_for<- c('flight school',' head coach')


应该在两个'searching_for'示例中返回true,因为单词'flight'和'coach'确实存在于'text'中,尽管是作为一个大短语的一部分。
我该怎么做呢?我的实际数据集有超过10万行。

5n0oy7gb

5n0oy7gb1#

text <- c('flight cancelled','coach test') 
searching_for<- c('flight','coach')

+(colSums(sapply(searching_for, grepl, text, fixed = TRUE)) > 0)
flight  coach 
     1      1

字符串

b4wnujal

b4wnujal2#

我们可以使用str_equal

text <- c('flight cancelled','coach test') 
searching_for<- c('flight','coach')

as.integer(str_equal(text,searching_for))

字符串
[1]0 0

3b6akqbq

3b6akqbq3#

library(stringr)

str_detect(text, str_flatten(searching_for, "|"))
# TRUE TRUE

字符串

mu0hgdu0

mu0hgdu04#

尝试outer + grepl,如下所示

> rowSums(outer(searching_for, text, Vectorize(grepl))) > 0
[1] TRUE TRUE

字符串

4dbbbstv

4dbbbstv5#

另一种方式:

map_lgl(text, ~ any(str_detect(.x, searching_for))) # [1] TRUE TRUE 
# TRUE is equivalent to 1; ie. TRUE + TRUE = 2, so converting it into an integer most likely isn't necessary

字符串

相关问题