如何找到距离矩阵中哪两个对象的距离最小?
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 = TRUE
的 which
。 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
我试图找出 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 = TRUE
的 which
。 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