>>>>> "DR" == Dimitris Rizopoulos <[EMAIL PROTECTED]> >>>>> on Sun, 21 Sep 2008 19:58:44 +0200 writes:
DR> try the following DR> a <- matrix(rnorm(36), 6) DR> ind <- lower.tri(a) DR> a[ind] <- t(a)[ind] DR> a Yes, indeed, it needs the t(.) trick. Note that 'Matrix' package has a function forceSymmetric(.) to do this for you (faster, using C code): A <- forceSymmetric(Matrix(rnorm(36), 6)) is all you'd need {if can afford to trash half of the random numbers generated} Martin Maechler, ETH Zurich DR> I hope it helps. DR> Best, DR> Dimitris DR> Megh Dal wrote: >> I have following matrix : >> >> a = matrix(rnorm(36), 6) >> >> Now I want to replace the lower-triangular elements with it's upper-triangular elements. That is I want to make a symmetric matrix from a. I have tried with lower.tri() and upper.tri() function, but got desired result. Can anyone please tell me how to do that? ______________________________________________ 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.