我在R中有一个距离矩阵。我想找到矩阵中最小值的行索引和列索引,其中行索引不等于列索引(因此一个值与自身的距离也不相等)。如何在R中执行此操作?
现在我有:
which(D == min(D), arr.ind = TRUE)
,它将返回矩阵中最小值的索引,但不会排除值与自身之间的距离。
答案 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