当我有一个距离矩阵(或基于矩阵的数据框)时,如何获取与给定值对应的行和列?
Example:
df <- data.frame(x = c(11:20), y= c(12:21))
dst <- dist(df)
输出:
1 2 3 4 5 6 7 8 9
2 1.414214
3 2.828427 1.414214
4 4.242641 2.828427 1.414214
5 5.656854 4.242641 2.828427 1.414214
6 7.071068 5.656854 4.242641 2.828427 1.414214
7 8.485281 7.071068 5.656854 4.242641 2.828427 1.414214
8 9.899495 8.485281 7.071068 5.656854 4.242641 2.828427 1.414214
9 11.313708 9.899495 8.485281 7.071068 5.656854 4.242641 2.828427 1.414214
10 12.727922 11.313708 9.899495 8.485281 7.071068 5.656854 4.242641 2.828427 1.414214
现在我想输入例如11.313708 并得到输出 (9, 1)
我们转换为矩阵并得到索引which
with arr.ind=TRUE
(假设这是您想要的)。
m1 <- as.matrix(dst)
which(m1==val, arr.ind=TRUE)
否则,如果我们已经知道值的索引,我们可以使用常规的按行、列进行子集化。正如 @nicola 在评论中提到的,有可能出现浮点问题。为了避免这种情况可能是round
然后进行比较。 IE。
which(round(m1, 3)== 11.314, arr.ind=TRUE)
# row col
#9 9 1
#10 10 2
#1 1 9
#2 2 10
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)