[R] generating symmetric matrices
Charles C. Berry
cberry at tajo.ucsd.edu
Mon Jul 30 18:39:29 CEST 2007
On Fri, 27 Jul 2007, Gregory Gentlemen wrote:
> I have a seemingly simple task which I have not been able to solve
> today. I want to construct a symmetric matrix of arbtriray size w/o
> using loops. The following I thought would do it:
> p <- 6
> Rmat <- diag(p)
> dat.cor <- rnorm(p*(p-1)/2)
> Rmat[outer(1:p, 1:p, "<")] <- Rmat[outer(1:p, 1:p, ">")] <- dat.cor
> However, the problem is that the matrix is filled by column and so the resulting matrix is not symmetric.
> I'd be grateful for any adive and/or solutions.
Depends on the order of elements in dat.cor. Either
Rmat <- diag(p)
Rmat[lower.tri(Rmat)] <- dat.cor
Rmat[upper.tri(Rmat)] <- t( Rmat )[upper.tri(Rmat)]
or swap 'upper' for 'lower'.
> [[alternative HTML version deleted]]
> R-help at stat.math.ethz.ch mailing list
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
Charles C. Berry (858) 534-2098
Dept of Family/Preventive Medicine
E mailto:cberry at tajo.ucsd.edu UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901
More information about the R-help