【发布时间】:2018-01-06 16:22:12
【问题描述】:
我不明白 dist() 函数如何计算两个向量之间的欧几里得距离。我创建了最简单的一维向量,我想解释一下我得到的结果。这是一个名为 test.csv 的 CSV 文件中的向量:
Item Name Attribute
Item 1 3
Item 2 5
代码如下:
test <- read.csv("test.csv", header = TRUE)
dist(test, method = "euclidean")
这是我得到的输出:
dist(test, method = "euclidean")
1 2 2.828427
Warning message: In dist(test, method = "euclidean") : NAs introduced by coercion
R的版本是:Rx64 3.4.3
我希望结果是 2 而不是 2.828427,因为我假设欧几里得距离是通过以下公式计算的:d = sqrt((xi - yi)^2)。
将 test.csv 文件中的数字代入我得到的公式中:
d = sqrt((3-5)^2) = 2
【问题讨论】:
-
它没有计算
c(3, 5)的距离,请查看str(test)的输出以查看传递给dist的内容。 -
我猜是您在将非数字数据传递给
dist时遇到了该错误 - 请尝试从计算中省略第一列。 -
ps 如果您发布
dput(test)的结果,我们更容易看到您的数据发生了什么。 ty