[R] converting matrix of lists to a regular matrix

David Winsemius dwinsemius at comcast.net
Sun Oct 4 02:30:37 CEST 2009


On Oct 3, 2009, at 7:51 PM, Andrew Yee wrote:

> Take the following code:
> foo <- list()
>
> foo[[1]] <- list(a=1, b=2)
> foo[[2]] <- list(a=11, b=22)
> foo[[3]] <- list(a=111, b=222)
>

Instead, perhaps:

 > do.call(rbind, lapply(foo, unlist))
        a   b
[1,]   1   2
[2,]  11  22
[3,] 111 222

 > do.call(rbind, lapply(foo, unlist))[,"a"]
[1]   1  11 111


> result <- do.call(rbind, foo)
> result[,'a']

class(result) # also matrix

>
> In this case, result[,'a'] shows a list. Is there a more elegant way  
> such
> that result is a "regular" matrix of vectors? I imagine there are  
> manual
> ways of going about this, but I was wondering if there was an  
> obvious step
> that I was missing.

Your example shows that a matrix can be constructed around a list,  
although I agree with you that this seems a bit unusual.
-- 

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list