Since a symmetric matrix must be square, the following code does it: > X<-5 > MAT<-matrix(rnorm(X*X),X,X) > MAT<-MAT+t(MAT) > MAT [,1] [,2] [,3] [,4] [,5] [1,] 0.1084372 -1.7867366 -0.9620313 -1.0925719 -0.5902326 [2,] -1.7867366 -0.0462097 -1.2707656 0.6112664 1.8673785 [3,] -0.9620313 -1.2707656 -0.3248162 1.5458446 0.7641865 [4,] -1.0925719 0.6112664 1.5458446 -0.1621192 -1.1381366 [5,] -0.5902326 1.8673785 0.7641865 -1.1381366 -2.8668220
If you want to rescale it, for example to make a correlation matrix with the diagonal=1, just use cor(): > cor(MAT) [,1] [,2] [,3] [,4] [,5] [1,] 1.00000000 -0.2941807 0.03784626 -0.6431474 -0.5743853 [2,] -0.29418072 1.0000000 0.65284419 -0.3410521 -0.5921743 [3,] 0.03784626 0.6528442 1.00000000 -0.2502129 -0.7101451 [4,] -0.64314741 -0.3410521 -0.25021285 1.0000000 0.7593021 [5,] -0.57438527 -0.5921743 -0.71014507 0.7593021 1.0000000 The essential trick is to add matrix to transpose. On Saturday 28 July 2007 04:28:25 Gregory Gentlemen wrote: > Greetings, > > 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. > > Gregory > > > > > --------------------------------- > > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@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. -- Best wishes John John Logsdon "Try to make things as simple Quantex Research Ltd, Manchester UK as possible but not simpler" [EMAIL PROTECTED] [EMAIL PROTECTED] +44(0)161 445 4951/G:+44(0)7717758675 www.quantex-research.com ______________________________________________ R-help@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.