Как найти индексы минимального значения в матрице, где индекс строки не равен индексу столбца? - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть матрица расстояний в R. Я хочу найти индексы строк и столбцов минимального значения в матрице, где индекс строки не равен индексу столбца (поэтому не расстояние от одного значения до самого себя).Как мне сделать это в R?

Прямо сейчас у меня есть:

which(D == min(D), arr.ind = TRUE) 

, который бы возвращал индексы минимального значения в матрице, но не исключал бы расстояния значенийдля себя.

1 Ответ

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

Предполагая, что D симметричен, а его элементы конечны, установите диагональную и верхнюю (или нижнюю) треугольную часть в первую очередь Inf.(Если это не симметрично, просто установите диагональную часть в Inf: diag(D) <- Inf.)

# test input
D <- matrix(1:25, 5)
D <- (D + t(D)) / 2
diag(D) <- 0

D[upper.tri(D, diag = TRUE)] <- Inf
which(D == min(D), arr = TRUE)

, давая:

     row col
[1,]   2   1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...