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

时间:2016-07-09 05:40:46

标签: r grepl

R函数grep!grep(非grep)在逻辑上不一致;与grepl!grepl(非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。这怎么可能是一个逻辑上一致的返回值?谁能解释一下?

2 个答案:

答案 0 :(得分:4)

您正在寻找invert的{​​{1}}参数。

来自grep()参数

  

反转 - 合乎逻辑。如果help(grep)返回匹配的元素的索引或值。

听起来就像你想要的那样。我们来看一个例子。

TRUE

答案 1 :(得分:0)

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

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

grep vs grepl in R