>>>>> "RB" == Rui Barradas <ruipbarra...@sapo.pt>
>>>>>     on Tue, 12 Nov 2013 18:52:31 +0000 writes:

    RB> Hello,

    RB> Maybe using ?Reduce:

    RB> Zlist <- c(mat1, mat2, mat3)
    RB> Z <- Reduce(cbind2, Zlist)

    RB> Ztmp <- cbind2(mat1, mat2)
    RB> Z2 <- cbind2(Ztmp, mat3)

    RB> identical(Z, Z2)  # TRUE

    RB> Also, I prefer list(mat1, mat2, mat3), not c().
(me too)

    RB> Hope this helps,
    RB> Rui Barradas

Well... I'm a bit disappointed that nobody took up and made the
matter a bit more clear :

1) cbind2() is not from package Matrix, but from standard R,
   package 'methods'.
   It is true (and necessary!) that Matrix defines many (S4)
   methods for cbind2(), indeed.

2) The help page for cbind2() {and rbind2()} mentions that their
   main use is to be used as building blocks for more than two
   arguments, and then mentions the possibility of
     methods:::bind_activation(TRUE)
   which makes  cbind() and rbind()  being "S4" aware and using
   cbind2() and rbind2() for column and row binding.

   The help page then has a "link" to  cBind() and rBind()  in
   the Matrix package, and these actually *are* cbind and rbind
   version that work with an arbitrary number of matrices
   (Matrix package or other; it will work whenever cbind2() /
   rbind2() methods are defined).

So, where as you can use cbind with  Reduce()   and that is nice functional
programming {not available at the time  cBind / rBind
were created},
actually the whole idea was that you would simply
use
        cBind(mat1, mat2, mat3)

Maybe we have to review this matter, or at least add something
to the help pages.

Martin Maechler, 
ETH Zurich


    RB> Em 12-11-2013 17:20, Doran, Harold escreveu:
    >> Suppose I have three matrices, such as the following:
    >> 
    >> mat1 <- Matrix(rnorm(9), 3)
    >> mat2 <- Matrix(rnorm(9), 3)
    >> mat3 <- Matrix(rnorm(9), 3)
    >> 
    >> I now need to column bind these and I could do the following if there 
were only two of those matrices because cbind2() has an x and y argument
    >> 
    >> Zlist <- c(mat1, mat2)
    >> Z <- do.call(cbind2, Zlist)
    >> 
    >> The following would not work as noted in the help page for cbind2() and 
I don't think I want to activate cbind() here.
    >> 
    >> Zlist <- c(mat1, mat2, mat3)
    >> Z <- do.call(cbind2, Zlist)
    >> 
    >> So, the object I would want in the end would be
    >> Ztmp <- cbind2(mat1, mat2)
    >> Z <- cbind2(Ztmp, mat3)
    >> 
    >> I never have a large number of these things to combine, so I have solved 
the problem with a simple loop over the list.
    >> 
    >> I'm curious though if there is a better (and perhaps) more reliable way 
to do this?
    >> 
    >> Thanks,
    >> Harold
    >> 
    >> [[alternative HTML version deleted]]
    >> 
    >> ______________________________________________
    >> 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.
    >> 

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

______________________________________________
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