On Aug 24, 2010, at 11:29 AM, Vladimir Mikryukov wrote:

> Dear list members,
> 
> I need to create a table from a huge list object,
> this list consists of matrices of the same size (but with different
> content).
> 
> The resulting n tables should contain the same rows from all matrices.
> 
> For example:
> n <- 23
> x <- array(1:20, dim=c(n,6))
> 
> huge.list <- list()
> for (i in 1:1000) {
>    huge.list[[i]] <- x }
> 
> 
> # One of 1000 matrices
> huge.list[[1]][1:4, 1:6]
>     [,1] [,2] [,3] [,4] [,5] [,6]
> [1,]    1    4    7   10   13   16
> [2,]    2    5    8   11   14   17
> [3,]    3    6    9   12   15   18
> [4,]    4    7   10   13   16   19
> ...
> 
> # The result should be like that:
> # One of n tables (with the row 4 from all 1000 matrices):
>     [,1] [,2] [,3] [,4] [,5] [,6]
> [1,]    4    7   10   13   16   19
> [2,]    4    7   10   13   16   19
> [3,]    4    7   10   13   16   19
> [4,]    4    7   10   13   16   19
> ...
> [999,]    4    7   10   13   16   19
> [1000,]    4    7   10   13   16   19
> 
> 
> # I tried to convert a list object to an array
> ARR <- array(unlist(huge.list), dim = c(dim(huge.list[[1]]),
> length(huge.list)))
> # then split it and use abind function, but it didn't work

You need to look in the direction of lapply() & friends

do.call(rbind,lapply(huge.list,"[",4,))

t(sapply(huge.list,"[",4,TRUE))

both seem to cut the mustard. (Notice that sapply() will cbind() the results 
automagically, and that for some odd reason it is more unhappy about missing 
arguments than lapply is.)

For more intelligible and generalizable code, also consider

do.call(rbind, lapply(huge.list, function(x)x[4,]))


-- 
Peter Dalgaard
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd....@cbs.dk  Priv: pda...@gmail.com

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to