извлечь из матрицы расстояний на основе максимального расстояния - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть матрица расстояний генетических расстояний между парами изолятов, например:

structure(c(0, 0.5, 0, 0.5, 0, 0.3, 0, 0.3, 0), .Dim = c(3L, 
3L), .Dimnames = list(c("A", "B", "C"), c("A", "B", "C")))

Я сделал огромную тепловую карту из ~ 5000 изолятов, но это слишком много, чтобы извлечь интересные области, читаяметки и поэтому я хочу отфильтровать матрицу расстояний, чтобы получить, например.все пары изолятов с расстоянием <0,5. </p>

Мой вывод может выглядеть так:

B    C    0.3

Как я могу это сделать?

1 Ответ

0 голосов
/ 04 февраля 2019

Как то так?

m <- structure(
  c(0, 0.5, 0, 0.5, 0, 0.3, 0, 0.3, 0),
  .Dim = c(3L,
           3L),
  .Dimnames = list(c("A", "B", "C"), c("A", "B", "C"))
)
# we convert matrix m to long format
m2 <-
  matrix(m, dimnames = list(t(outer(
    colnames(m), rownames(m), FUN = paste
  )), NULL))
# and finally we subset it
(vec <- m2[m2[, 1] < 0.5,])
#> A A A C B B B C C A C B C C 
#> 0.0 0.0 0.0 0.3 0.0 0.3 0.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...