如何在R中更容易创建对称关联矩阵?

时间:2015-06-06 10:38:50

标签: r

我有一个类似于:

的相关矩阵

enter image description here

这只是一个例子,我的实际矩阵远大于此。我只想输入矩阵的上三角形或下三角形。问题是我只知道如何输入整个矩阵......

在这个例子中,是否有任何方法可以为下层三角层提供(1,0.31,1,0.32 ......等)来创建一个完整的相关矩阵?

1 个答案:

答案 0 :(得分:1)

如果v是一个向量,给出相关矩阵的下三角部分,包括对角线,那么:

# test data
nms <- c("a", "b", "c")
v <- c(1, .2, .1, 1, .1, 1) 

n <- length(nms)
m <- diag(n)
dimnames(m) <- list(nms, nms)
m[lower.tri(m, diag = TRUE)] <- v
m[upper.tri(m)] <- t(m)[upper.tri(m)]

,并提供:

> m
    a   b   c
a 1.0 0.2 0.1
b 0.2 1.0 0.1
c 0.1 0.1 1.0

注意:由于R按列存储矩阵按列提供输入比使用行更常见,但如果v按行包含较低的三角形,则交换lower.tri以及upper.tri