[R] Constructing correlation matrices

Bert Gunter gunter.berton at gene.com
Mon Jul 30 23:12:51 CEST 2007


See ?dist for an object oriented approach that may be better.

Directly, you can do something like (see  ?row ?col):

x <- matrix(NA, 10,10)
## Lower triangular :
x[row(x) >= col(x) ] <- rnorm(55) 
x[row(x) < col(x)] <- x[row(x) > col(x)]
## or you could have saved the random vector and re-used it.


Bert Gunter
Genentech Nonclinical Statistics


-----Original Message-----
From: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Gregory Gentlemen
Sent: Sunday, July 29, 2007 7:32 PM
To: r-help at stat.math.ethz.ch
Subject: [R] Constructing correlation matrices

Greetings,

I have a seemingly simple task which I have not been able to solve today and
I checked all of the help archives on this and have been unable to find
anything useful. 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 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