[R] strange behavior of matrix

William Revelle lists at revelle.net
Tue Apr 6 01:37:50 CEST 2010

Dear R list,

I have discovered a seemingly peculiar feature when using a matrix to 
index itself (yes, this is strange code, which I have now modified to 
be more reasonable).

  #this makes sense
  s <- matrix(1:3,nrow=1)
  s[s]    #all three elements are shown

  #but when I try
  s <- matrix(1:2,nrow=1)
  s[1]     #fine, the first element is shown
  s[2]     #fine, the second element is shown
  s[s]     #just the second element is shown  -- this is peculiar

  #But doing it by columns works for both cases
  s <- matrix(1:3,ncol=1)
  s[s]    #all three elements are shown

  #and when I try the same problem down a column
  s <- matrix(1:2,ncol=1)
  s[1]     #fine

  s[2]     #fine

  s[s]     #this shows both elements  as would be expected

  #clearly since I have just one dimension, it would have been better to
  s <- 1:2
  s[s]   #which works as one would expect.

Or, using the array  function we get the same problem.

>  s <- array(1:2,dim=c(1,2))
>  s[s]
[1] 2
>  s <- array(1:2,dim=c(2,1))
>  s[s]
[1] 1 2

>  sessionInfo()
R version 2.11.0 Under development (unstable) (2010-03-24 r51389)

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

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

other attached packages:
[1] psych_1.0-87

I think this is unexpected behavior.

Best wishes,


William Revelle		http://personality-project.org/revelle.html
Professor			http://personality-project.org
Department of Psychology             http://www.wcas.northwestern.edu/psych/
Northwestern University	http://www.northwestern.edu/
Use R for psychology                       http://personality-project.org/r
It is 6 minutes to midnight	http://www.thebulletin.org

More information about the R-help mailing list