【发布时间】:2022-01-05 02:45:05
【问题描述】:
假设我有 5 对向量形式的坐标 (x1,y1)(region1) , (x2,y2)(region2) 等等,直到 (x5,y5)(region5)。
现在我想找到每个区域之间的距离。例如,我采取
距离,D = √[(????i−????????)^2+(????????−????????)^2] 区域 i和 j 并且输出将是一个 5 x 5 矩阵,其中矩阵 (Dij) 中的每个条目是两个区域之间的距离。
例如,我有区域 1,其坐标为 (4,3),区域 2 (1,2)。那么这两个区域之间的距离应该是 D = √10,这应该在 Dij 的条目中,其中 i =1 和 j=2,因此 D12 如上述矩阵所示。 我尝试了如下所示的代码:
x=c(1,2,4,1,1)
y=c(4,3,1,2,2)
Distance = function(x,y){
D = sqrt(abs((x[i]-x[j])^2+(y[i]-y[j])^2))
A = matrix(0,nrow=5,ncol=5,T)
i = nrow(A)
j = ncol(A)
for (i in 1:5){
for (j in 1:5){
A[i][j] = D
}
}
return(A)
}
输出:
Warning messages:
1: In A[i] <- `*vtmp*` :
number of items to replace is not a multiple of replacement length
其中有 20 条警告消息。叹。我知道我的代码远非正确。请帮忙
【问题讨论】:
-
我不会在评论中正确解决您的函数问题,这足以说明计算应该发生在双循环内并且
A的索引不正确。 R 有一个内置的距离函数,所以我认为你只是在寻找dist(cbind(x, y), diag = TRUE, upper = TRUE)。 -
您可以接受解决问题的答案,也可以发布自己的答案,而不是在标题中标记
-
好吧,我没注意到。从现在开始会记住这一点。我对堆栈溢出很陌生。谢谢友情提醒。干杯
标签: r math matrix vector distance