Hi R users: How can I built a direct sum function of matrices in R? I mean A(mxn), B(pxq), C(rxs),... X<-ds(A,B,C,...) X = [ A, 0, 0 0, B, 0 0, 0, C] ((m+p+r+...) x (n+q+s+...)) Thank you for your help. Kenneth -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/
?bdiag from package:assist may help you a bit. HTH, Danny On Fri, 28 Jan 2005, Kenneth wrote:> Hi R users: > > How can I built a direct sum function of matrices in R? > > I mean A(mxn), B(pxq), C(rxs),... > > X<-ds(A,B,C,...) > > X = [ A, 0, 0 > 0, B, 0 > 0, 0, C] ((m+p+r+...) x (n+q+s+...)) > > Thank you for your help. > > Kenneth > > -- > Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > > >
Kenneth <krcabrer <at> unalmed.edu.co> writes: : : Hi R users: : : How can I built a direct sum function of matrices in R? : : I mean A(mxn), B(pxq), C(rxs),... : : X<-ds(A,B,C,...) : : X = [ A, 0, 0 : 0, B, 0 : 0, 0, C] ((m+p+r+...) x (n+q+s+...)) : : Thank you for your help. Search r-help for blockdiag, adiag or bdiag. At that time I had posted a solution using zoo but the fillargument in merge.zoo has been added since then so here is an update that's slightly shorter. Suppose we have m1 <- matrix(1:4, 2, 2) m2 <- matrix(11:14, 2, 2) # Then we create two time series with non-overlapping time # intervals and merge them using a fill of zero. You can # use any number of zoo matrices in zoo, but here we just use two: m <- merge( zoo(m1, 1:2), zoo(m2, 3:4), fill = 0) # You may wish to clean the result up a bit with: class(m) <- "matrix"; dimnames(m) <- NULL