如何找到距离矩阵中哪两个对象的距离最小?

How to find which two objects have the smallest distance from a distance matrix?

我试图找出 R 中哪两个对象之间的欧氏距离最小。 我已经完成了:

D=dist(cars) D

我得到以下距离矩阵:

Acura      Audi       BMW     Buick  Corvette  Chrysler     Dodge
Audi     3.1495274                                                            
BMW      2.5272253 0.8824932                                                  
Buick    2.7363507 2.1892563 1.5595952                                        
Corvette 4.0625240 2.4510262 3.0415220 4.3323665                              
Chrysler 2.3861259 1.5829112 1.3527912 1.6089444 3.0808340                    
Dodge    2.4011411 1.7289445 1.6058003 1.8883905 2.8791439 0.4580483    

然后我确定矩阵中的 min 距离为:

min(D, na.rm = T)
# [1] 0.4274665

但是,有没有办法检索这个值属于哪些对象(行名和列名)的信息?我希望像 "Saab" "BMW"

使用带有参数 arr.ind = TRUEwhich。 return 矩阵的行名称是问题要求的值。

data(mtcars)
D <- dist(mtcars)

w <- which(as.matrix(D) == min(D), arr.ind = TRUE)
rownames(w)
#[1] "Mazda RX4 Wag" "Mazda RX4"

距离是

as.matrix(D)[w]
#[1] 0.6153251 0.6153251