Как объединить 2 матрицы в график

#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 для Джорана