Reputation: 7005
I want to create a list of 2D matrices
> x
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
> y
[,1] [,2]
[1,] 301 306
[2,] 302 307
[3,] 303 308
[4,] 304 309
[5,] 305 310
> MATS<-c(x,y)
> MATS[1]
[1] 1
I would like to be able to refer to MATS[1] as if it where x...
Upvotes: 21
Views: 61504
Reputation: 61214
Try
x <- matrix(1:10, ncol=2)
y <- x+300
MATS <- list(x, y) # use 'list' instead of 'c' to create a list of matrices
MATS
[[1]]
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
[[2]]
[,1] [,2]
[1,] 301 306
[2,] 302 307
[3,] 303 308
[4,] 304 309
[5,] 305 310
Here you have to refer to MATS[[1]]
as if it were x
If you want to append a new matrix to the exiting list try
z <- x+500
MATS[[3]] <- z # appeding a new matrix to the existing list
MATS
[[1]]
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
[[2]]
[,1] [,2]
[1,] 301 306
[2,] 302 307
[3,] 303 308
[4,] 304 309
[5,] 305 310
[[3]]
[,1] [,2]
[1,] 501 506
[2,] 502 507
[3,] 503 508
[4,] 504 509
[5,] 505 510
One drawback of this approach is that you have to know the position in the list where you have to append the new matrix, if you don't know it or simply if you dont want this approach, then here's a trick:
unlist(list(MATS, list(z)), recursive=FALSE) # will give u the same list :D
Upvotes: 19