我在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。
谢谢!
答案 0 :(得分:5)
使用strsplit
将b
分割为单词,然后使用sapply
对每个单词执行grepl
。结果将是一个逻辑向量,如果全部为TRUE,则返回TRUE:
all(sapply(strsplit(b, " ")[[1]], grepl, a))
,并提供:
[1] TRUE
注意:如果您只想确定a
和b
是否与空格相同,请从两者中删除空格并比较剩下的内容:< / p>
gsub(" ", "", a) == gsub(" ", "", b)