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

问题描述 投票:1回答:1

我正在尝试找出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

但是,有没有一种方法可以检索此值所属的对象(行名和列名)的信息?我期望像“萨博”“宝马”这样的东西

r matrix min
1个回答
0
投票

which与参数arr.ind = TRUE一起使用。返回矩阵的行名称是问题所要求的值。

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
© www.soinside.com 2019 - 2024. All rights reserved.