当我有一个距离矩阵(或基于矩阵的数据帧)时,如何获得与给定值相对应的行和列?

例子:

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)

最佳答案

我们将转换为矩阵,并使用whicharr.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

关于r - 如何获取与data.frame或distance矩阵中给定值匹配的单元格的行和列数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37409356/

10-12 23:56