我正在尝试找出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
但是,有没有一种方法可以检索此值所属的对象(行名和列名)的信息?我期望像“萨博”“宝马”这样的东西
将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