5

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

0

2 Answers 2

10

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
Sign up to request clarification or add additional context in comments.

2 Comments

thanks for your response @Molx how about if myStr includes more than one string and I want to see which of them include all the strings in str?
Without going to a matrix via apply, you could also do: do.call(mapply, c(all,lapply(str, grepl, myStrings) ))
5

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

2 Comments

If you're going to use stringr, use the appropriate function - all(str_detect(myStr,str))
It also possible to use "any" instead of "all" if we need to have only one TRUE value - any(str_detect(myStr,str))

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.