例如,我们有两个矩阵:
A=
[,1] [,2] [,3]
[1,] -2 1 0
[2,] 1 0 -1
[3,] 0 -1 4和
B=
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 1 2 3
[3,] 3 1 2
[4,] 2 3 1
[5,] 3 1 2我要计算A行和B行之间的距离矩阵,换句话说,用我们的例子:
[,1] [,2] [,3]
[1,] dist(B[1,]-A[1,]) dist(B[1,]-A[2,]) dist(B[1,]-A[3,])
[2,] dist(B[2,]-A[1,]) dist(B[2,]-A[2,]) dist(B[2,]-A[3,])
[3,] dist(B[3,]-A[1,]) dist(B[3,]-A[2,]) dist(B[3,]-A[3,])
[4,] dist(B[4,]-A[1,]) dist(B[4,]-A[2,]) dist(B[4,]-A[3,])
[5,] dist(B[5,]-A[1,]) dist(B[5,]-A[2,]) dist(B[5,]-A[3,])我正在考虑使用"dist“函数,该函数计算并返回数据矩阵的行间距离矩阵。但它只适用于一个矩阵。我尝试使用命令"rbind(A,B)“并将"dist”应用于结果矩阵,但在这种情况下,我还获得了同一矩阵的行之间的距离。
发布于 2018-02-26 11:22:13
也许这条路?
A = matrix(c(-2, 1, 0, 1, 0, -1, 0, -1, 4), ncol = 3, byrow = TRUE)
B = matrix(c(1, 2, 3, 1, 2, 3, 3, 1, 2, 2, 3, 1, 3, 1, 2), ncol = 3, byrow = TRUE)
t(sapply(1:nrow(B), function(x) {
sqrt(rowSums(t(t(A)-B[x,])^2))
}))
[,1] [,2] [,3]
[1,] 4.358899 4.472136 3.316625
[2,] 4.358899 4.472136 3.316625
[3,] 5.385165 3.741657 4.123106
[4,] 4.582576 3.741657 5.385165
[5,] 5.385165 3.741657 4.123106发布于 2018-02-26 11:23:21
# First build a matrix
Dist.M <- matrix(0, nrow = nrow(A), ncol = ncol(B))
# Complete the matrix
for (i in 1:nrow(A)){
for (j in 1:nrow(B)){
Dist.M[i,j] <- dist(rbind(A[i,],B[j,])
}
}https://stackoverflow.com/questions/48987142
复制相似问题