r - 如何计算 R 中 n 维的欧几里得距离?
问题描述
我正在尝试编写一个函数来计算跨 n 维的两点之间的欧几里得距离。
我有以下代码:
euc_dist <- function(x1, x2) sqrt(sum((x1 - x2) ^ 2))
这适用于两点x1
和x2
。但是,我正在尝试对两点之间的 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 代码来做同样的事情?
解决方案
正如评论中所指出的,您可以使用该函数dist()
,它返回行之间的欧几里德距离,而不管列数(维度)如何。或者,如果你想使用你的函数,你可以这样做:
euc_dist <- function(x1, x2){
return(sqrt(sum((x1 - x2)^2)))
}
不要忘记return()
R 函数的末尾,这是一个常见的“错误”,会带来不必要的麻烦当将输入传递给函数时,请改为这样做,因为它是使用向量的正确方法回复:
euc_dist(c(2, 1, 4), c(4, 9, 8))
推荐阅读
- api - 通过 API V1 更新意图对话框流程
- javascript - 鼠标与触摸:使用 javascript 可靠地检测实际用户输入,而不是设备功能
- reactjs - 如何在休假时清除表单数据 - 反应原生
- post - 在Modelviewset中发布请求成功时如何调用函数
- c# - Digital Persona Finger Print 4500 集成 ASP.NET 和 C#
- java - 非活动输入连接
- python - 检查数据框中的列表列中是否有元素
- powershell - 尝试在电话便笺中添加创建日期并输入当前日期,但只能获得“创建日期”
- hexo - hexo 部署到 github 页面失败
- angular - 如何让弹出窗口仅从我从编辑按钮加载的表单中加载?