首页 > 解决方案 > 如何从对角线计算距离矩阵?

问题描述

考虑我们有一个名为Pred的数据框的数据框。

它由每行 1 个用户组成。

用户由其唯一的用户 ID指定指定。

用户可以按集群分组他们所属

用户报告了他们对任务的信心和挑战,此信息保存为ConfChall

请注意,ConfChall都具有相同的范围,即1-6。

cluster   userID      Conf        Chall
1           A           5           3
2           B           3           2
1           C           6           1
1           D           3           4
2           E           2           4
2           F           3           5
1           G           6           2
1           H           5           5
2           I           6           2
2           J           5           4
2           K           1           1
1           L           3           5
1           M           4           4

假设我们制作了一个散点图,其中Conf在 x 轴上,Chall在 y 轴上。

要点:

Conf == Chall

将在穿过原点的对角线上。

现在我有兴趣根据他们的坐标找到每个用户到对角线的距离:

(Conf, Chall) 

总体而言,该问题涉及找到点(Conf,Chall)与对角线的距离。

笔记:请注意,我对绘制图表不感兴趣。我对计算距离向量很感兴趣。

我理解,这可能是一个非常基本的问题,但过去几天我一直在努力。一个简单的演示示例代码将帮助我理解这个问题。

我将不胜感激任何指导!

标签: rlinepointdiagonaldistance-matrix

解决方案


从点 (x,y) 到对角线的欧几里得距离由下式给出

abs(x - y) / sqrt(2)

参见,例如,here。因此,您可以使用

(Pred$distance <- abs(Pred$Conf - Pred$Chall) / sqrt(2))
# [1] 1.4142136 0.7071068 3.5355339 0.7071068 1.4142136 1.4142136 2.8284271
# [8] 0.0000000 2.8284271 0.7071068 0.0000000 1.4142136 0.0000000

推荐阅读