繁体   English   中英

当grepl和!grepl逻辑上一致时,为什么在R中grep和!grep逻辑上不一致?

[英]Why in R are grep & !grep not logically consistent when grepl and !grepl ARE logically consistent?

R函数grep!grep (非grep)在逻辑上不一致; grepl!grepl (NOT grepl)在逻辑上是一致的。

grepl返回一个逻辑向量,该向量的长度等于要搜索的项目数。 例如,如果在5项向量的项目2和3中找到目标,则返回以下内容:

FALSE TRUE TRUE FALSE FALSE 

如果将grepl替换为!grepl ,则返回“相反”的逻辑结果:

TRUE FALSE FALSE TRUE TRUE 

grep ,另一方面,返回找到的项目的2个位置的向量: 2 3

!grep在相同的情况下返回什么? 从逻辑上讲,它应该返回1 4 5 ,而不是返回FALSE FALSE 这怎么能成为逻辑上一致的返回值? 谁能解释?

您正在寻找grep()invert参数。

help(grep) Arguments下:

反转 -逻辑。 如果为TRUE返回匹配元素的索引或值。

听起来确实就是您想要的。 让我们来看一个例子。

x <- c("ab", "cd", "bc", "def", "abc")

grep("b", x)
# [1] 1 3 5
grep("b", x, invert=TRUE)
# [1] 2 4

grep(value = FALSE)-返回产生匹配项的x元素索引的向量。

grepl返回逻辑向量(是否匹配x的每个元素)。

R中的grep vs grepl

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM