2

我在 R 中使用 grepl() 将模式与字符串匹配。

我需要将多个字符串匹配到一个公共字符串,如果它们都匹配,则返回 TRUE。

例如:

a <- 'DEARBORN TRUCK INCDBA'
b <- 'DEARBORN TRUCK INC DBA'

我想看看变量 b 中的所有单词是否也在变量 a 中。

我不能只使用 grepl(b, a) 因为模式(空格)不一样。

看起来应该是这样的:

grepl('DEARBORN&TRUCK&INC&DBA', a)

或者

grepl('DEARBORN+TRUCK+INC+DBA', a)

但两者都不起作用。我需要将 b 中的每个单词与 a 进行比较。在这种情况下,由于所有单词都存在于 a 中,它应该返回 TRUE。

谢谢!

4

1 回答 1

5

用于strsplit拆分b成单词,然后用于对每个这样的单词sapply执行 a 。grepl结果将是一个逻辑向量,如果全部为 TRUE,则返回 TRUE:

all(sapply(strsplit(b, " ")[[1]], grepl, a))

给予:

[1] TRUE

注意: 如果您只是想确定除了空格之外是否ab它们相同,则从两者中删除空格并比较剩下的内容:

gsub(" ", "", a) == gsub(" ", "", b)
于 2015-01-05T19:13:24.533 回答