How to create an array of lists of multiple components?
On Wed, Dec 29, 2010 at 4:58 PM, Marius Hofert <m_hofert at web.de> wrote:
Dear Jim,
thanks for your quick response. Here is what I try to achieve:
## list containing some data
l <- list(
? ? ? ? ?list(
? ? ? ? ? ? ? list(
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2)
? ? ? ? ? ? ? ? ? ?),
? ? ? ? ? ? ? list(
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2)
? ? ? ? ? ? ? ? ? ?),
? ? ? ? ? ? ? list(
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2)
? ? ? ? ? ? ? ? ? ?)
? ? ? ? ? ? ? ),
? ? ? ? ?list(
? ? ? ? ? ? ? list(
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2)
? ? ? ? ? ? ? ? ? ?),
? ? ? ? ? ? ? list(
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2)
? ? ? ? ? ? ? ? ? ?),
? ? ? ? ? ? ? list(
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2),
? ? ? ? ? ? ? ? ? ?list(a = 1, b = "b", c = 2)
? ? ? ? ? ? ? ? ? ?)
? ? ? ? ? ? ? )
? ? ? ? ?)
## now (try to) build an array of lists of the form list(a = 1, b = "b", c = 2)
n1 <- 2
n2 <- 3
n3 <- 4
res <- array(rep(list(NULL,NULL,NULL), n1*n2*n3), dim = c(n1,n2,n3))
for(i in 1:n1){
? ?for(j in 1:n2){
? ? ? ?for(k in 1:n3){
? ? ? ? ? ?res[i,j,k] <- l[[i]][[j]][[k]]
? ? ? ?}
? ?}
}
Try this: array(sapply(sapply(l, c), c), c(4, 3, 2))
Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com