[英]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.