[R] "[[" gotcha

Robin Hankin r.hankin at noc.soton.ac.uk
Tue Jan 16 11:10:42 CET 2007


The following gotcha caught me off-guard just now.

I have two matrices, a and b:


a <- matrix(1,3,3)
b <- matrix(1,1,1)

(note that both "a" and "b" are matrices).

I want them in a list:

 > B <- NULL
 > B[[1]] <- a
 > B[[2]] <- b
 > B
[[1]]
      [,1] [,2] [,3]
[1,]    1    1    1
[2,]    1    1    1
[3,]    1    1    1

[[2]]
      [,1]
[1,]    1

 >

This is fine.

But swapping "a" and "b" over does not behave as desired:


 > B <- NULL
 > B[[1]] <- b
 > B[[2]] <- a
Error in B[[2]] <- a : more elements supplied than there are to replace
 >



The error is given because after B[[1]] <- a,   the variable B is  
just a scalar and
not a matrix (why is this?)

What's the bulletproof method for assigning matrices to a list (whose  
length is
not known at runtime)?








--
Robin Hankin
Uncertainty Analyst
National Oceanography Centre, Southampton
European Way, Southampton SO14 3ZH, UK
  tel  023-8059-7743



More information about the R-help mailing list