我在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。

谢谢!

最佳答案

使用strsplitb拆分为单词,然后使用sapply对每个此类单词执行grepl。结果将是一个逻辑向量,如果全部为TRUE,则返回TRUE:

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


给予:

[1] TRUE


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

gsub(" ", "", a) == gsub(" ", "", b)

关于r - R grepl-字符串匹配模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27786117/

10-09 02:52