#r #matrix #plot
#r #матрица #график
Вопрос:
У меня есть 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
...
Мне нужно объединить эти 2 матрицы на графике корреляций в зависимости от расстояний, но я понятия не имею, как это сделать в R, и, учитывая, что у меня более 80 местоположений, я не хочу делать это вручную! Кто-нибудь знает способ сделать это?
Спасибо!
Ответ №1:
Если вы просто хотите построить корреляции как функцию расстояний, без наложения определенной структуры на свой график, вы можете просто извлечь нижнюю часть ваших соответствующих матриц, например
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)])
Ответ №2:
Предполагая, что ваши матрицы хранятся в m1
и m2
, работает ли это:
dat <- data.frame(a=as.vector(m1[upper.tri(m1)]),
b=as.vector(m2[upper.tri(m2)]))
plot(dat$a,dat$b)
Комментарии:
1. 1 кажется, мы ответили совершенно одновременно, предложив почти одно и то же решение.
2. Спасибо, ребята! К сожалению, я могу принять только 1 ответ, но 1 для Джорана