首页 > 解决方案 > 如何计算 R 中 n 维的欧几里得距离?

问题描述

我正在尝试编写一个函数来计算跨 n 维的两点之间的欧几里得距离。

我有以下代码:

euc_dist <- function(x1, x2) sqrt(sum((x1 - x2) ^ 2))

这适用于两点x1x2。但是,我正在尝试对两点之间的 n 维执行此操作。

例如,在 Python 中,它适用于:

def euc_distance(p, q):
    return math.sqrt(sum((px - qx) ** 2 for px, qx in zip(p, q)))

即您可以输入例如三个维度(两点之间):

euc_distance([2, 1, 4], [4, 9, 8])

如何编辑我的 R 代码来做同样的事情?

标签: rfunctioneuclidean-distance

解决方案


正如评论中所指出的,您可以使用该函数dist(),它返回行之间的欧几里德距离,而不管列数(维度)如何。或者,如果你想使用你的函数,你可以这样做:

euc_dist <- function(x1, x2){
 return(sqrt(sum((x1 - x2)^2)))
}

不要忘记return()R 函数的末尾,这是一个常见的“错误”,会带来不必要的麻烦当将输入传递给函数时,请改为这样做,因为它是使用向量的正确方法回复:

euc_dist(c(2, 1, 4), c(4, 9, 8))

推荐阅读