R中两个数据帧的行之间的欧式距离 [英] Euclidean Distances between rows of two data frames in R

查看:63
本文介绍了R中两个数据帧的行之间的欧式距离的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

R 中计算欧几里德距离很容易.可以在 HERE 中找到一个很好的例子.向量化形式为:

Calculating Euclidean Distances in R is easy. A good example can be found HERE. The vectorised form is:

sqrt((known_data[, 1] - unknown_data[, 1])^2 + (known_data[, 2] - unknown_data[, 2])^2)

获取一个数据帧的每一行与另一数据帧的所有行的欧几里得距离的最快,最有效的方法是什么? apply()家族中的特定功能?谢谢!

What would be the fastest, most efficient way to get Euclidean Distances for each row of one data frame with all rows of another data frame? A particular function from apply() family? Thanks!

推荐答案

也许您可以尝试外部 + dist ,如下所示

Maybe you can try outer + dist like below

outer(
  1:nrow(known_data),
  1:nrow(unknown_data),
  FUN = Vectorize(function(x,y) dist(rbind(known_data[x,],unknown_data[y,])))
)

这篇关于R中两个数据帧的行之间的欧式距离的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆