繁体   English   中英

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

[英]How to find the indices of the minimum value in a matrix, where row index is not equal to column index?

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

现在我有:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM