Dear R-users This seems to be a trivial problem but at the moment I don?t know how to solve it. I have a list with 7000 matrices, every matrix has 2 columns but different row-sizes. Now I want to combine all lists into one matrix with 2 columns. I would have to write: ma <- rbind(list[[1]],list[[2]], and so on) (this works fine for lists with few matrices) Since it is not possible to write: ma <- rbind(list[[1:7000]]) or ma <- rbind(list[[1]]:list[[7000]]) maybe someone could tell me how to do it? Thank you in advance for your help for this stupid question. Best regards Christian Stratowa, Ph.D. Vienna -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
cstrato at EUnet.at writes:> I have a list with 7000 matrices, every matrix has 2 columns but > different row-sizes. > Now I want to combine all lists into one matrix with 2 columns. I would > have to write: > > ma <- rbind(list[[1]],list[[2]], and so on) (this works fine for lists > with few matrices) > > Since it is not possible to write: > ma <- rbind(list[[1:7000]]) or > ma <- rbind(list[[1]]:list[[7000]]) > maybe someone could tell me how to do it?do.call("rbind", list) -- O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
On Thu, 10 Feb 2000 cstrato at EUnet.at wrote:> Dear R-users > > This seems to be a trivial problem but at the moment I donĀ“t know how to > solve it. > > I have a list with 7000 matrices, every matrix has 2 columns but > different row-sizes. > Now I want to combine all lists into one matrix with 2 columns. I would > have to write: > > ma <- rbind(list[[1]],list[[2]], and so on) (this works fine for lists > with few matrices) > > Since it is not possible to write: > ma <- rbind(list[[1:7000]]) or > ma <- rbind(list[[1]]:list[[7000]]) > maybe someone could tell me how to do it?You could use do.call("rbind", list), but for efficiency, something like nr <- sapply(list, NROWS) # to get a vector of the numbers of rows. cs <- cumsum(nr) st <- c(0, nr[-length(nr)]) + 1 res <- matrix(, sum(nr), 2) for(i in seq(along=nr)) res[st[i]:en[i],] <- list[[i]] Beware: untested code. Or, a lot sneakier but probably a lot quicker than either row1 <- lapply(list, function(x) x[, 1]) row2 <- lapply(list, function(x) x[, 2]) matrix(c(unlist(row1), unlist(row2)),,2) -- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272860 (secr) Oxford OX1 3TG, UK Fax: +44 1865 272595 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._