Reputation: 1098
I have this string:
myStr <- "I am very beautiful btw"
str <- c("very","beauti","bt")
Now I want to check whether myStr
includes all strings in str
, how can I do this in R? For example above it should be TRUE
.
Many Thanks
Upvotes: 5
Views: 14902
Reputation: 6921
Yes, you can use grepl
(not grep
, actually), but you must run it once for each substring:
> sapply(str, grepl, myStr)
very beauti bt
TRUE TRUE TRUE
To get only one result if all of them are true, use all
:
> all(sapply(str, grepl, myStr))
[1] TRUE
Edit:
In case you have more than one string to check, say:
myStrings <- c("I am very beautiful btw", "I am not beautiful btw")
You then run the sapply
code, which will return a matrix with one row for each string in myStrings. Apply all
on each row:
> apply(sapply(str, grepl, myStrings), 1, all)
[1] TRUE FALSE
Upvotes: 10
Reputation: 21621
Using stringr
you could do:
str_detect(myStr, str)
Which returns a result for each substring:
#[1] TRUE TRUE TRUE
Or as per @thelatemail suggestion, if you want to know if all of them are true:
all(str_detect(myStr,str))
Which gives:
#[1] TRUE
You could also find the location (start, end) of every character in myStr
that matches str
str_locate(myStr, str)
Which gives:
# start end
#[1,] 6 9
#[2,] 11 16
#[3,] 21 22
Upvotes: 5