R 相关协方差矩阵到方差协方差矩阵

R 相关协方差矩阵到方差协方差矩阵,r,matrix,covariance,correlation,R,Matrix,Covariance,Correlation,有没有一种简单的方法将相关协方差矩阵转换为方差协方差矩阵?我总是对循环使用嵌套的,如下所示,但我一直认为baseR中可能有一个内置函数 my.matrix <- matrix(c(0.64901, 0.76519, -0.63620, -0.01923, 0.02114, 0.00118, -0.43198, 0.02480, -0.21811, -0.00630, 0.18109, 0.059

有没有一种简单的方法将相关协方差矩阵转换为方差协方差矩阵?我总是对循环使用嵌套的
,如下所示,但我一直认为base
R
中可能有一个内置函数

my.matrix <- matrix(c(0.64901,  0.76519, -0.63620, -0.01923,
                      0.02114,  0.00118, -0.43198,  0.02480,
                     -0.21811, -0.00630,  0.18109,  0.05964,
                     -0.00710,  0.00039,  0.01162,  0.20972), nrow=4, byrow=TRUE)

new.matrix <- my.matrix

for(i in 1:nrow(my.matrix)) {  
   for(j in 1:ncol(my.matrix)) { 
      new.matrix[i,j] = ifelse(i<j, my.matrix[j,i], new.matrix[i,j])
   }
}

new.matrix

#          [,1]     [,2]     [,3]     [,4]
# [1,]  0.64901  0.02114 -0.21811 -0.00710
# [2,]  0.02114  0.00118 -0.00630  0.00039
# [3,] -0.21811 -0.00630  0.18109  0.01162
# [4,] -0.00710  0.00039  0.01162  0.20972

my.matrix我认为您可能需要使用
获取索引,然后交换行和列。试试这个

k <- which(lower.tri(my.matrix), arr.ind=TRUE)
my.matrix[k[,c(2,1)]] <- my.matrix[k]
k