簡體   English   中英

使用邏輯向量的向量索引

[英]Vector Indexing using Logical vector

我是 R 新手。我創建了一個對象 a: a <- c(2,4,6,8,10,12,14,16,18,20)

我對向量執行了以下操作: a[!c(10,0,8,6,0)]並且我得到的輸出為 4 10 14 20

我明白!c(10,0,8,6,0)產生的輸出為 FALSE TRUE FALSE FALSE TRUE

我不明白最終結果是 4 10 14 20

有人可以幫忙嗎?

我們得到結果是因為邏輯向量被回收(因為它的長度僅為 5,而length(a)為 10)以滿足“a”向量的結尾,即

i1 <- rep(!c(10,0,8,6,0), length.out = length(a))
i1
[1] FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE

如果我們使用那個向量

a[i1]
[1]  4 10 14 20

更容易理解,如果我們只是傳遞TRUE ,然后 TRUE 被回收以返回所有元素或與FALSE相反

a[TRUE]
 [1]  2  4  6  8 10 12 14 16 18 20
a[FALSE]
numeric(0)

回收在?Extract的文檔中提到

對於 [-indexing only: i, j, ... 可以是邏輯向量,指示要選擇的元素/切片。 如有必要,這些向量會被回收以匹配相應的范圍。 i, j, ... 也可以是負整數,表示元素/切片不在選擇范圍內。


在大多數語言中,0 被視為 FALSE,其他值被視為 TRUE。 所以,當我們否定 0 (FALSE) 被轉換為 TRUE 而所有其他的都被轉換為 FALSE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM