gpt4 book ai didi

r - R中的欧几里德距离计算没有意义

转载 作者:行者123 更新时间:2023-12-04 08:55:59 25 4
gpt4 key购买 nike

(前言:我既不是统计学家也不是程序员。我是人文学科的,所以请怜悯我的灵魂)。

我需要计算 R 中一系列点之间的欧几里得距离。我一直在使用 dist(),如下所示:

> x <- c(0,0)
> y <- c(0,10)
> dist(rbind(x,y))
x
y 10

到现在为止还挺好。但是当我查看我的结果(使用实数)时,它们非常糟糕。以至于我认为我的 R 脚本从错误的列中获取数据。但是我查了一下,没有。

所以我开始玩玩具数字,我很惊讶。上面的例子(一条垂直线)可以正常工作,下面(一条水平线)也是如此:
> x <- c(0,10)
> y <- c(0,0)
> dist(rbind(x,y))
x
y 10

但是当两点形成的线是对角线时,就会出现奇怪的现象:
> x <- c(0,10)
> y <- c(0,10)
> dist(rbind(x,y))
x
y 0

距离为0?嗯?那不可能是对的。

当点相同时(这在我的数据中很有可能),我们进入兔子洞:
> x <- c(0,0)
> y <- c(10,10)
> dist(rbind(x,y))
x
y 14.14214

这不应该是0吗?毕竟,这些点是相同的,所以它们之间不可能有距离。

以防万一 dist() 出现问题,我尝试通过维基百科手动实现该公式。相同的结果:
> sqrt(sum((x - y) ^ 2))
[1] 14.14214

正如我上面所说,我的数学背景很少,所以我完全希望这里的错误是我的。如果是这样,请解释它是什么以及如何纠正它。但从我现在的立场来看,似乎有些事情很不对劲。

最糟糕的是,我无法分析我的数据。

最佳答案

看起来你想要 dist(cbind(x, y)) ,不是 dist(rbind(x, y)) .

关于r - R中的欧几里德距离计算没有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7801836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com