计算数据帧的每一行与另一个数据帧中所有其他行之间的欧氏距离,但输出应该是哪一行
calculating the euclidean dist between each row of a dataframe with all other rows in another dataframe, but out put should be which row
我的情况和这个类似:
calculating the euclidean dist between each row of a dataframe with all other rows in another dataframe
所以,我有两个数据框,x 和 y。我想计算 x 的每一行和 y 的每一行之间的欧氏距离,但我有兴趣为 x 的每一行得到 y 的哪一行具有最小距离,因为我想根据到行的距离对 x 的行进行聚类y(x 有 10 行,y 有 4 行)。
所以我的输出应该是这样的:
1 2 2 4 3 3 2 2 1 4
也就是说,x 的第一行最接近 y 的第一行,依此类推。
我正在为 kmeans 聚类编写算法。
我是 R 的新手,需要一些帮助。
谢谢
您发布的问题的公认解决方案是:
unlist(lapply(seq_len(nrow(y)), function(i) min(sqrt(colSums((y[i, ] - t(x))^2)))))
要更改此设置以获取索引而不是值,请将 min
更改为 which.min
,这应该 return 您正在寻找的输出:
unlist(lapply(seq_len(nrow(y)), function(i) which.min(sqrt(colSums((y[i, ] - t(x))^2)))))
我的情况和这个类似: calculating the euclidean dist between each row of a dataframe with all other rows in another dataframe
所以,我有两个数据框,x 和 y。我想计算 x 的每一行和 y 的每一行之间的欧氏距离,但我有兴趣为 x 的每一行得到 y 的哪一行具有最小距离,因为我想根据到行的距离对 x 的行进行聚类y(x 有 10 行,y 有 4 行)。 所以我的输出应该是这样的: 1 2 2 4 3 3 2 2 1 4 也就是说,x 的第一行最接近 y 的第一行,依此类推。 我正在为 kmeans 聚类编写算法。 我是 R 的新手,需要一些帮助。 谢谢
您发布的问题的公认解决方案是:
unlist(lapply(seq_len(nrow(y)), function(i) min(sqrt(colSums((y[i, ] - t(x))^2)))))
要更改此设置以获取索引而不是值,请将 min
更改为 which.min
,这应该 return 您正在寻找的输出:
unlist(lapply(seq_len(nrow(y)), function(i) which.min(sqrt(colSums((y[i, ] - t(x))^2)))))