gpt4 book ai didi

r - 计算数据帧的每一行与另一个数据帧中的所有其他行之间的欧几里得距离

转载 作者:行者123 更新时间:2023-12-04 07:38:18 25 4
gpt4 key购买 nike

我需要生成一个数据帧的每一行与另一个数据帧的所有其他行之间具有最小欧几里德距离的数据帧。我的两个数据帧都很大(大约 40,000 行)。这是我到目前为止可以解决的问题。

x<-matrix(c(3,6,3,4,8),nrow=5,ncol=7,byrow = TRUE)     
y<-matrix(c(1,4,4,1,9),nrow=5,ncol=7,byrow = TRUE)


sed.dist<-numeric(5)
for (i in 1:(length(sed.dist))) {
sed.dist[i]<-(sqrt(sum((y[i,1:7] - x[i,1:7])^2)))
}

但这仅在 i=j 时有效。我本质上需要的是通过逐行遍历每一行来找到最小欧几里得距离( y[1,1:7],然后是 y[2,1:7] 等等直到“y”数据帧的 i= 5 )与“x”数据帧的所有行(x[i,1:7])。每次执行此操作时,我都需要它找到每次计算的最小欧几里得距离y 数据帧的第 i 行和 x 数据帧的所有行,并将其存储在另一个数据帧中。

最佳答案

试试这个:

apply(y,1,function(y) min(apply(x,1,function(x,y)dist(rbind(x,y)),y)))
# [1] 5.196152 5.385165 4.898979 4.898979 5.385165

从内到外,我们将一行 x 绑定(bind)到一行 y 并使用 dist(...) 计算它们之间的距离函数(用 C 编写)。我们对给定的 y 行和 x 的每一行依次执行此操作,使用内部 apply(...) ,然后找到结果的最小值。然后我们在对 apply(...) 的外部调用中对 y 的每一行执行此操作。 .

关于r - 计算数据帧的每一行与另一个数据帧中的所有其他行之间的欧几里得距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22231773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com