【发布时间】:2015-05-22 04:21:12
【问题描述】:
数据:
我有一个名为 mat 的距离 matrix,具有以下标签和值:
>mat
179 175 176 181 249
175 147.451648
176 174.527392 28.849183
181 187.166092 40.007553 16.310747
249 194.644103 49.268129 20.637011 17.118671
336 190.182183 44.613076 16.023090 13.697248 5.613544
问题:
我想提取矩阵最小值 (5.613544) 的行和列标签。
预期的输出类似于:
[1] 336 249
我尝试使用colnames(mat) 和rownames(mat),但都返回NULL。
我知道函数labels(mat)能够返回标签:
[1] "179" "175" "176" "181" "249" "336"
但是我在这里卡住了,无法理解它。它可能很容易,很抱歉提出这个简单的问题。 关于如何做到这一点的任何想法?
这是我使用dput()的数据:
structure(c(147.451648169349, 174.527392333086, 187.166091923018,
194.644102830409, 190.182183344061, 28.849182654733, 40.007553207889,
49.2681293306533, 44.6130761331497, 16.3107466873124, 20.6370107209517,
16.0230895738958, 17.1186706020006, 13.6972482228087, 5.6135436361904
), Size = 6L, Labels = c("179", "175", "176", "181", "249", "336"
), Diag = FALSE, Upper = FALSE, method = "euclidean", class = "dist")
【问题讨论】:
-
我编辑了我的 dput(),感谢 cmets。该矩阵是函数 dist() 的输出(欧式距离)。
-
另外,
names(which(as.matrix(mat) == min(mat), arr.ind = TRUE)[, 1])