如何解决R中两个数据帧的行之间的欧式距离
在 R 中计算欧几里得距离很容易。可以找到一个很好的例子HERE。向量化形式为:
sqrt((known_data[,1] - unknown_data[,1])^2 + (known_data[,2] - unknown_data[,2])^2)
获取一个数据帧的每一行与另一数据帧的所有行的欧几里得距离的最快,最有效的方法是什么? apply()
家族的特殊功能?谢谢!
解决方法
也许您可以像下面这样尝试outer
+ dist
outer(
1:nrow(known_data),1:nrow(unknown_data),FUN = Vectorize(function(x,y) dist(rbind(known_data[x,],unknown_data[y,])))
)
,
我会在两个数据帧的组合上使用dist()
函数(非常有效),然后根据需要删除不需要的距离。示例:
df1 <- iris[1:5,-5]
df2 <- iris[6:10,-5]
all_distances <- dist(rbind(df1,df2))
all_distances <- as.matrix(all_distances)
# remove unneeded distances
all_distances[1:5,1:5] <- NA
all_distances[6:10,6:10] <- NA
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。