waealu
waealu

Reputation: 331

R grepl - Matching Pattern to String

I am using grepl() in R to match patterns to a string.

I need to match multiple strings to a common string and return TRUE if they all match.

For example:

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

I want to see if all words in variable b are also in variable a.

I can't just use grepl(b, a) because the patterns (spaces) aren't the same.

It seems like it should be something like this:

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

or

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

but neither work. I need to compare each individual word in b to a. In this case, since all the words exist in a, it should return TRUE.

Thanks!

Upvotes: 2

Views: 1161

Answers (1)

G. Grothendieck
G. Grothendieck

Reputation: 270248

Use strsplit to split b into words and then use sapply to perform a grepl on each such word. The result will be a logical vector and if its all TRUE then return TRUE:

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

giving:

[1] TRUE

Note: If you are only looking to determine if a and b are the same aside from spaces then remove the spaces from both and compare what is left:

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

Upvotes: 6

Related Questions