[R] Creating a correlation matrix from a vector
David Winsemius
dwinsemius at comcast.net
Fri Oct 26 17:58:34 CEST 2012
On Oct 26, 2012, at 6:52 AM, F_Smithers wrote:
> I'm looking to create a correlation matrix, but I have already obtained the
> correlations, which are stored in a vector. (Basically, I'm running a
> simulation which requires a correlation matrix, but I am simulating the
> various correlations.)
>
> My aim is to create a function that can take the vector, and fit the values
> into their respective locations in a correlation matrix. (The correlations
> are ordered as if working along the upper triangle of the correlation matrix
> row-wise.)
>
> The initial step in the function was to create a diagonal matrix of length
> n, (n being the number of factors) and then add the correlations at each
> level using a for command.
> mat<- matrix(1:16, 4,4)
> mat[ upper.tri(mat) ]
[1] 5 9 10 13 14 15
> newmat <- matrix(NA, 4,4)
> newmat[ upper.tri(newmat) ] <- mat[ upper.tri(mat) ]
> newmat
[,1] [,2] [,3] [,4]
[1,] NA 5 9 13
[2,] NA NA 10 14
[3,] NA NA NA 15
[4,] NA NA NA NA
> newmat[ lower.tri(newmat) ] <- t(newmat[upper.tri(newmat)])
> newmat
[,1] [,2] [,3] [,4]
[1,] NA 5 9 13
[2,] 5 NA 10 14
[3,] 9 13 NA 15
[4,] 10 14 15 NA
> diag(newmat) <- 1
> newmat
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 5 1 10 14
[3,] 9 13 1 15
[4,] 10 14 15 1
--
David Winsemius, MD
Alameda, CA, USA
More information about the R-help
mailing list