[R] Efficient access to elements of a list of lists

Benilton Carvalho beniltoncarvalho at gmail.com
Sun Mar 11 17:18:53 CET 2012


Hi,

I have a long list of lists from which I want to efficiently extract
and rbind elements. So I'm using the approach below:


f <- function(i){
    out <- replicate(5, list(matrix(rnorm(80), nc=20)))
    names(out) <- letters[1:5]
    out
}
set.seed(1)
lst <- lapply(1:1.5e6, f)
(t0 <- system.time(tmp <- do.call(rbind, lapply(lst, '[[', 'b'))))


Is there anything better/faster than the do.call+rbind+lapply combo
above? On this example, the combo takes roughly 20s on my machine...
but on the data I'm working with, it takes more than 1 minute... And
given that I need to repeat the task several times, the cumul. amount
of time is significant for me.

Thank you for any suggestion/comment,

benilton



More information about the R-help mailing list