这是我的剧本:
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伙计中的错误吗?
答案 0 :(得分:1)
这是预期的行为,请参阅grepl
documentation:
<强>
grepl(pattern, x, ignore.case = FALSE, perl = FALSE,
fixed = FALSE, useBytes = FALSE)
强>
pattern
包含要在给定字符向量中匹配的正则表达式( 或fixed = TRUE
的字符串)的字符串。如果可能,由as.character
强制转换为字符串。如果提供长度为2或更大的字符向量,则第一个元素将与警告一起使用。除regexpr
和gregexpr
外,允许缺少值。<强>
fixed
强>
逻辑。 如果TRUE
,则pattern是一个匹配的字符串。覆盖所有冲突的参数。
因此,您正在abcd
中搜索abcd_efgh
,即true
。设置fixed=TRUE
时,您不需要完整字符串匹配,只是模式中使用的所有字符都不能是正则表达式元字符。