在行索引不等于列索引的矩阵中,如何找到最小值的索引?

时间:2019-02-02 23:43:48

标签: r matrix

我在R中有一个距离矩阵。我想找到矩阵中最小值的行索引和列索引,其中行索引不等于列索引(因此一个值与自身的距离也不相等)。如何在R中执行此操作?

现在我有:

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

,它将返回矩阵中最小值的索引,但不会排除值与自身之间的距离。

1 个答案:

答案 0 :(得分:1)

假设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