我有这个字符串:
myStr <- "I am very beautiful btw"
str <- c("very","beauti","bt")
现在我想检查myStr
是否包含str
中的所有字符串,我该如何在R中执行此操作?例如,上面应该是TRUE
。
非常感谢
答案 0 :(得分:6)
是的,您可以使用grepl
(实际上不是grep
),但必须为每个子字符串运行一次:
> sapply(str, grepl, myStr)
very beauti bt
TRUE TRUE TRUE
如果只有一个结果为真,请使用all
:
> all(sapply(str, grepl, myStr))
[1] TRUE
编辑:
如果要检查多个字符串,请说:
myStrings <- c("I am very beautiful btw", "I am not beautiful btw")
然后运行sapply
代码,该代码将为myStrings中的每个字符串返回一行矩阵。在每行上应用all
:
> apply(sapply(str, grepl, myStrings), 1, all)
[1] TRUE FALSE
答案 1 :(得分:5)
使用stringr
即可:
str_detect(myStr, str)
返回每个子字符串的结果:
#[1] TRUE TRUE TRUE
或者根据@thelatemail建议,如果你想知道所有这些是否属实:
all(str_detect(myStr,str))
给出了:
#[1] TRUE
您还可以找到与myStr
匹配的str
中每个字符的位置(开头,结尾)
str_locate(myStr, str)
给出了:
# start end
#[1,] 6 9
#[2,] 11 16
#[3,] 21 22