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
在这两种情况下查找模式:tryregexpr(“foo”,foobar[,1])
。阅读帮助,您会发现regexpr
返回带有匹配位置、匹配长度以及TRUE或FALSE的向量。在第二种情况下,它是一个,因此它返回FALSE。您可能被打印的附加属性弄糊涂了。在这两种情况下,只需检查c(regexpr(“foo”,foobar[,1]))
。然后阅读上面的评论。