[R] how to convert the lower triangle of a matrix to a symmetricmatrix

John Fox jfox at mcmaster.ca
Fri Apr 20 14:50:26 CEST 2007


Dear Ranjan,

If the elements are ordered by rows, then the following should do the trick:

    X <- diag(p)
    X[upper.tri(X, diag=TRUE)] <- elements
    X <- X + t(X) - diag(diag(X))

If they are ordered by columns, substitute lower.tri() for upper.tri().

I hope this helps,
 John

--------------------------------
John Fox, Professor
Department of Sociology
McMaster University
Hamilton, Ontario
Canada L8S 4M4
905-525-9140x23604
http://socserv.mcmaster.ca/jfox 
-------------------------------- 

> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch 
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Ranjan Maitra
> Sent: Thursday, April 19, 2007 9:28 PM
> To: r-help at stat.math.ethz.ch
> Subject: [R] how to convert the lower triangle of a matrix to 
> a symmetricmatrix
> 
> Hi,
> 
> I have a vector of p*(p+1)/2 elements, essentially the lower 
> triangle of a symmetric matrix. I was wondering if there is 
> an easy way to make it fill a symmetric matrix. I have to do 
> it several times, hence some efficient approach would be very useful.
> 
> Many thanks and best wishes,
> Ranjan
> 
> ______________________________________________
> 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
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list