wae*_*alu 2 string r pattern-matching grepl
我在R中使用grepl()来匹配模式到字符串.
我需要将多个字符串匹配到一个公共字符串,如果它们都匹配则返回TRUE.
例如:
a <- 'DEARBORN TRUCK INCDBA'
b <- 'DEARBORN TRUCK INC DBA'
Run Code Online (Sandbox Code Playgroud)
我想看看变量b中的所有单词是否也在变量a中.
我不能只使用grepl(b,a)因为模式(空格)不一样.
它似乎应该是这样的:
grepl('DEARBORN&TRUCK&INC&DBA', a)
Run Code Online (Sandbox Code Playgroud)
要么
grepl('DEARBORN+TRUCK+INC+DBA', a)
Run Code Online (Sandbox Code Playgroud)
但都没有工作.我需要将b中的每个单词与a进行比较.在这种情况下,由于所有单词都存在于a中,因此应返回TRUE.
谢谢!
使用strsplit拆分b成单词,然后用sapply执行grepl每个这样的话.结果将是一个逻辑向量,如果全部为TRUE,则返回TRUE:
all(sapply(strsplit(b, " ")[[1]], grepl, a))
Run Code Online (Sandbox Code Playgroud)
赠送:
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
注意: 如果你只希望确定a和b是相同的除了空格,则来自两个空格去掉,并比较还剩下什么:
gsub(" ", "", a) == gsub(" ", "", b)
Run Code Online (Sandbox Code Playgroud)