我有2个对称矩阵(矩阵的数学含义),一个位置之间的距离(位置用4位数字编码:2030,2059,2095 ......),如下所示:
2030 2059 2095 ...
2030 NA 59328 68464
2059 59328 NA 37196
2095 68464 37196 NA
...
和另一个与位置之间的相关性:
2030 2059 2095...
2030 1.0000000 0.4651804 0.6185849
2059 0.4651804 1.0000000 0.4428746
2095 0.6185849 0.4428746 1.0000000
...
我需要在相关性与距离的关系图中组合这两个矩阵,但不知道如何在R中进行,并且考虑到我有80多个位置,我不想手动执行!有谁知道这样做的方法吗?
谢谢!
答案 0 :(得分:5)
如果您只想将相关性绘制为距离的函数,而不在图上强加特定结构,则可以只提取相应矩阵的下半部分,例如
x <- matrix(rnorm(1000), nrow=20)
d.mat <- as.matrix(dist(x))
c.mat <- cor(t(x))
plot(d.mat[lower.tri(d.mat)], c.mat[lower.tri(c.mat)])
答案 1 :(得分:4)
假设您的矩阵存储在m1
和m2
中,这是否有效:
dat <- data.frame(a=as.vector(m1[upper.tri(m1)]),
b=as.vector(m2[upper.tri(m2)]))
plot(dat$a,dat$b)