[R] list to matrix

cstrato@EUnet.at cstrato at EUnet.at
Thu Feb 10 15:42:33 CET 2000


Thank you both,  Dr. Dalgaard and Prof. Ripley, for the prompt response.

I have tested all solutions with a list of 500 matrices, all solutions are
about equally fast.

The untested code from Prof. Ripley works as follows:

nr <- sapply(list, nrow)
cs <- cumsum(nr)
st <- c(0, cs[-length(cs)]) + 1
res <- matrix(, sum(nr), 2)
for(i in seq(along=nr)) res[st[i]:cs[i],] <- list[[i]]

Thank you once again
Christian  Stratowa


Prof Brian D Ripley wrote:

> 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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list