簡體   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