> On 10 Oct 2015, at 10:00, David Winsemius <dwinsemius at 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