R 如何检查另一个字符串中是否存在多个字符串?

R 如何检查另一个字符串中是否存在多个字符串?,r,R,我有这个字符串: myStr <- "I am very beautiful btw" str <- c("very","beauti","bt") myStr是的,您可以使用grepl(实际上不是grep),但必须为每个子字符串运行一次: > sapply(str, grepl, myStr) very beauti bt TRUE TRUE TRUE #[1] TRUE TRUE TRUE 如果所有结果均为真,则仅获得一个结果,请使用all

我有这个字符串:

myStr <- "I am very beautiful btw"
str <- c("very","beauti","bt")

myStr是的,您可以使用
grepl
(实际上不是
grep
),但必须为每个子字符串运行一次:

> sapply(str, grepl, myStr)
  very beauti     bt 
  TRUE   TRUE   TRUE 
#[1] TRUE TRUE TRUE
如果所有结果均为真,则仅获得一个结果,请使用
all

> all(sapply(str, grepl, myStr))
[1] TRUE
编辑:

如果要检查多个字符串,请说:

myStrings <- c("I am very beautiful btw", "I am not beautiful btw")

使用
stringr
可以执行以下操作:

str_detect(myStr, str)
返回每个子字符串的结果:

> sapply(str, grepl, myStr)
  very beauti     bt 
  TRUE   TRUE   TRUE 
#[1] TRUE TRUE TRUE
或者根据@thelatemail的建议,如果您想知道它们是否都是真的:

all(str_detect(myStr,str))
其中:

#[1] TRUE
#     start end
#[1,]     6   9
#[2,]    11  16
#[3,]    21  22
您还可以在
myStr
中找到与
str
匹配的每个字符的位置(开始、结束)

str_locate(myStr, str)
其中:

#[1] TRUE
#     start end
#[1,]     6   9
#[2,]    11  16
#[3,]    21  22

如果要使用
stringr
,请使用适当的函数-
all(str_detect(myStr,str))
如果我们只需要一个真值-any(str_detect(myStr,str))也可以使用“any”而不是“all”)感谢您的回复@Molx如果myStr包含多个字符串,我想看看其中哪一个包含str中的所有字符串呢?不必通过
apply
进入矩阵,您也可以执行:
do.call(mapply,c(all,lappy(str,grepl,myStrings))