Milan Bouchet-Valat
2016-Apr-10 11:08 UTC
[Rd] Bounds error when indexing a matrix with NA_character_
Hi! I've just got a bounds error when trying to index a matrix with NA_character_:> y <- matrix(1:4, 2, 2, dimnames = list(A=c("a", "b"), B=c("a", "b"))) > y[NA,]??????B A???????a??b ? <NA> NA NA ? <NA> NA NA> y[NA_integer_,]?a? ?b? NA NA?> y[NA_character_,]Error in y[NA_character_, ] : index out of bounds Yet, I would have sworn it behaves like integer NA (which apparently isn't true since it also occurs with R 3.0). Assuming this isn't simply a bug, what's the rationale behind this, and is it documented anywhere? For example, ?Extract says:> ?????When extracting, a numerical, logical or character ?NA? index > ?????picks an unknown element and so returns ?NA? in the corresponding > ?????element of a logical, integer, numeric, complex or character > ?????result, and ?NULL? for a list.??(It returns ?00? for a raw > ?????result.)An indeed that's how it works for vectors:> x <- c(a=1) > x[NA_character_]<NA>? ? NA? The inconsistency between NA classes, and between vectors and matrices is surprising. Thanks for your comments.