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