The help page for ?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.] "

However, I seem to be getting different behavior when converting NA's to character indices for an array with character dimnames:

str(frailmed)
 num [1:73, 1:2, 1:2] -0.315 -0.31 -0.252 -0.311 -0.29 ...
 - attr(*, "dimnames")=List of 3
  ..$ : chr [1:73] "18" "19" "20" "21" ...
  ..$ : chr [1:2] "Female" "Male"
  ..$ : chr [1:2] "FALSE" "TRUE"

> frailmed[as.character(c(18,18,30)), "Female", "TRUE"]
        18         18         30
-0.3477757 -0.3477757 -0.3697707
> frailmed[as.character(c(18,18,30,NA)), "Female", "TRUE"]
Error: subscript out of bounds

I started thinking I might need to use grep or match to convert the numeric value for ageLB to a numeric index for "[", but after looking at the "manual" is seems I shouldn't be forced to do that.

> as.character(NA)
[1] NA
> frailmed[as.character(NA), "Female", "TRUE"]
Error: subscript out of bounds

I'm guessing that NA_character_ is not being recognized by the extraction engine:

> frailmed[NA_character_, "Female", "TRUE"]
Error: subscript out of bounds

Test subset:
test <- structure(c(-0.314905119091182, -0.309721294756184, -0.252154582680236, + 0.218589733943967, 0.227724425528112, 0.219274402692938, -0.347775659359612, + -0.351245759870099, -0.361973673972107, 0.155255554082878, 0.149765287705234,
+ 0.150206947093079), .Dim = c(3L, 2L, 2L), .Dimnames = list(c("18",
+ "19", "20"), c("Female", "Male"), c("FALSE", "TRUE")))
> test
, , FALSE

       Female      Male
18 -0.3149051 0.2185897
19 -0.3097213 0.2277244
20 -0.2521546 0.2192744

, , TRUE

       Female      Male
18 -0.3477757 0.1552556
19 -0.3512458 0.1497653
20 -0.3619737 0.1502069

> test[NA, 1,1]
<NA> <NA> <NA>
  NA   NA   NA
> test[as.character(NA), 1,1]
Error: subscript out of bounds

Is this intended behavior?

I do see from that last successful execution that I may need to attack my problem by just processing complete cases, since the return of a vector of NA's with length > 1 will also cause my logic to fail, but this behavior seems different than described.

sessionInfo()
R version 2.14.0 Patched (2011-11-13 r57650)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] splines   stats     graphics  grDevices utils     datasets
[7] methods   base

other attached packages:
[1] rms_3.3-2        Hmisc_3.9-0      survival_2.36-10 sos_1.3-1
[5] brew_1.0-6       lattice_0.20-0

loaded via a namespace (and not attached):
[1] cluster_1.14.1 grid_2.14.0    tools_2.14.0
>

--

David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to