> On 10 Oct 2015, at 10:00, David Winsemius <dwinsem...@comcast.net> wrote: > > > On Oct 9, 2015, at 10:57 PM, Steven Yen wrote: > >> Dear >> How do you construct a lower triangular matrix from a vector. >> >> I want to make vector >> >> a <- 1:10 >> >> into a triangular matrix >> >> 1 0 0 0 >> 2 3 0 0 >> 4 5 6 0 >> 7 8 9 10 >> > > I'm not sure this method with logical indexing will be the most elegant: > > ?lower.tri > ?col > >> b=matrix(0, sqrt(10)+1,sqrt(10)+1) > >> b[lower.tri(b)| row(b)==col(b)] <- 1:10 >> b > [,1] [,2] [,3] [,4] > [1,] 1 0 0 0 > [2,] 2 5 0 0 > [3,] 3 6 8 0 > [4,] 4 7 9 10 >
That doesn’t seem to be what the OP wanted. This should do it. a <- 1:10 C <- matrix(0, sqrt(length(a))+1,sqrt(length(a))+1) i.upr <- which(upper.tri(C, diag = TRUE), arr.ind=TRUE) C[i.upr] <- a t(C) resulting in [,1] [,2] [,3] [,4] [1,] 1 0 0 0 [2,] 2 3 0 0 [3,] 4 5 6 0 [4,] 7 8 9 10 I found this here: http://stackoverflow.com/questions/24472060/indexing-upper-or-lower-triangle-in-matrix-with-diagonal Berend ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.