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))