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.