# Re: [R] Correlation matrix from a vector of pairwise correlations

From: Ben Bolker <bolker_at_zoo.ufl.edu>
Date: Sun 04 Dec 2005 - 13:12:52 EST

Serguei Kaniovski <kaniovsk <at> wifo.ac.at> writes:

>
> I've a vector of pairwise correlations in the order low-index element
> precedes the high-index element, say:
>
> corr(1,2)=0.1, corr(1,3)=0.2, corr(2,3)=0.3, corr(3,4)=0.4
>
> How can I construct the corresponding correlation matrix?

Not absolutely sure what you want to do, but guessing a little bit (should your list above include corr(1,4) and corr(2,4) as well?) If you have

corrs <- c(c12=0.1,c13=0.2,c14=0.3,c23=0.4,c24=0.5,c34=0.6) ## names unnecessary but included for clarity m = diag(4) ## 4x4 diagonal matrix
m[lower.tri(m)] = corrs ## fill in lower triangle

## two ways to make it symmetric:

```m = t(m)                 ## flip around matrix
```
m[lower.tri(m)] = corrs ## fill in lower triangle

## OR
m[row(m)>col(m)] = t(m)[row(m)<col(m)]

don't know which is more efficient, but either should work --- if that's what you were trying for

Ben Bolker

R-help@stat.math.ethz.ch mailing list