r - 如何获取与data.frame或距离矩阵中给定值匹配的单元格的行数和列数?

标签 r dataframe

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

例子:

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 获得索引与 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

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

相关文章:

python - 如何用另一个数据帧列切片中的值替换数据帧列的切片?

r - 计算字符串末尾出现的次数

r - 如何将表格转换为数据框

r - 在 ggplot 中使用 facet wrap 时遇到问题

R t 检验分组因子必须恰好有 2 级误差

r - 头寸调整

r - 根据r中的多列查找数据框中的重复行

python - Pandas 数据框中两个字符串列表之间的一对一映射

python - 将默认值添加到数据框

python - Pandas series.rename 给出 TypeError : 'str' object is not callable error