R< grepl?中的错误?

时间:2015-10-27 12:41:10

标签: regex r grepl

这是我的剧本:

a<-list("abcd")
b<-list("abcd_efgh")
c<-"abcd"
d<-"abcd_efgh"

if(grepl(a,b,fixed=TRUE))
{
    print("bug?")
}

if(grepl(c,d,fixed=TRUE))
{
    print("bug?")
}

我的输出:

> source('~/.active-rstudio-document')
[1] "bug?"
[1] "bug?"

由于我提供了“固定=真假”,我对我失踪的内容感到困惑。 这是grepl伙计中的错误吗?

1 个答案:

答案 0 :(得分:1)

这是预期的行为,请参阅grepl documentation

  

<强> grepl(pattern, x, ignore.case = FALSE, perl = FALSE,
        fixed = FALSE, useBytes = FALSE)

     

pattern
  包含要在给定字符向量中匹配的正则表达式( fixed = TRUE 的字符串)的字符串。如果可能,由as.character强制转换为字符串。如果提供长度为2或更大的字符向量,则第一个元素将与警告一起使用。除regexprgregexpr外,允许缺少值。

     

<强> fixed
  逻辑。 如果TRUE,则pattern是一个匹配的字符串。覆盖所有冲突的参数。

因此,您正在abcd中搜索abcd_efgh,即true。设置fixed=TRUE时,您不需要完整字符串匹配,只是模式中使用的所有字符都不能是正则表达式元字符。