2016-08-17 65 views
0

我理解這個代碼行索引與NA

x <- 1:5; x[NA] 
[1] NA NA NA NA NA 

我的第一個想法是是R檢查是否1-5是NA

x <- c(NA, 2, 4); x[NA] 
NA NA NA. 

所以這不能成爲解決問題。我的第二個方法是x[NA]被索引,但後來我不明白

  1. 爲什麼這給了我五NA's
  2. NA爲指標意味着什麼。 x[1]給你第一個值,但是應該是x[NA]的結果?
+0

作爲輸出你期望什麼? – akrun

+0

看到[這個類似的帖子](http://stackoverflow.com/questions/23406124/na-in-subsetter-inconsistent-behavior) –

+0

@ zx8754:所以R檢查1是否在位置NA,但這是NA,因爲有沒有地位不適用。現在它進入下一個值2這裏是同樣的問題等等? – ruedi

回答

1

比較您的代碼:

> x <- 1:5; x[NA] 
[1] NA NA NA NA NA 

> x <- 1:5; x[NA_integer_] 
[1] NA 

在第一種情況,是NA型邏輯(class(NA)節目)的,而在第二它是一個整數。從?"["你可以看到,在被i邏輯的情況下,它被再循環至的x長度:

對於[僅-indexing:I,J,......可以是邏輯矢量,表示 元件/切片來選擇。如果需要,這些載體將被回收到與相應範圍匹配的 。 i,j,...也可以是負數,表示元素/切片不在選擇範圍內。