R-为什么';regexpr()';如果模式以字符串开头,则找不到字符串?

R-为什么';regexpr()';如果模式以字符串开头,则找不到字符串?,r,regex,R,Regex,在这种情况下,regexpr()为什么找不到单词foo: foobar <- data.frame(one=c("foo bar", "foo")) regexpr("foo",foobar[,1])>1 [1] FALSE FALSE foobar <- data.frame(one=c("bar foo", " foo")) regexpr("foo",foobar[,1])>1 [1] TRUE TRUE foobar 1 [1] 假假 但在这种情况下

在这种情况下,
regexpr()
为什么找不到单词
foo

foobar <- data.frame(one=c("foo bar", "foo"))
regexpr("foo",foobar[,1])>1

[1] FALSE FALSE
foobar <- data.frame(one=c("bar foo", " foo"))
regexpr("foo",foobar[,1])>1  

[1] TRUE TRUE
foobar 1
[1] 假假
但在这种情况下:

foobar <- data.frame(one=c("foo bar", "foo"))
regexpr("foo",foobar[,1])>1

[1] FALSE FALSE
foobar <- data.frame(one=c("bar foo", " foo"))
regexpr("foo",foobar[,1])>1  

[1] TRUE TRUE
foobar 1
[1] 千真万确
如果你能从一个解决方案中给出一个解释,那就太好了。
感谢allot

原因是我们使用
regexpr

 regexpr("foo",foobar[,1])
 #[1] 1 1
 #attr(,"match.length")
 #[1] 3 3
 #attr(,"useBytes")
 #[1] TRUE
第二个是

 #[1] 5 2

您可以检查
regexpr(..)
的输出,而无需逻辑代码。在第一种情况下,它从位置1开始,因此两个值都是1,逻辑比较是
>1
regexpr
在这两种情况下查找模式:try
regexpr(“foo”,foobar[,1])
。阅读帮助,您会发现
regexpr
返回带有匹配位置、匹配长度以及TRUE或FALSE的向量。在第二种情况下,它是一个,因此它返回FALSE。您可能被打印的附加属性弄糊涂了。在这两种情况下,只需检查
c(regexpr(“foo”,foobar[,1]))
。然后阅读上面的评论。