[R] How to create an array of lists of multiple components?

Gabor Grothendieck ggrothendieck at gmail.com
Wed Dec 29 23:19:21 CET 2010


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


More information about the R-help mailing list