r - 点矩阵之间的距离,简单的 if 和 for

标签 r matrix geometry distance

我想运行一个函数来给出两点之间的距离。我想计算所有点之间的距离我该怎么做。我知道可以使用 if 来完成或for ,但我不太擅长使用这些。

我的职能是:

Distance<- function(x,y)    {
  round(sqrt(sum((x - y) ^ 2)),3)
}

我在上述函数的东向和北向或 x 和 y 方向上有 34 个点:

easting=rbind(609027, 609282, 609501,609497,609405,609704,609718,610277,610530,610573,609875,608947,609865,611105,611169,611243,611388,611598,611339,611310,611212,611150,611358,611626,611763,611887,612043,612134,612160,612539,612857,613062,613154,613303)
northing=rbind(1534293,1534470,1534630,1534848,1534027,1535054,1535315,1535583,1535717,1536254,1536351,1536700,1536746,1536762,1537003,1537261,1537489,1537685,1537838,1538103,1538500,1538812,1539217,1539342,1539627,1539842,1540027,1540357,1540628,1540911,1541623,1541896,1542117,1542494)

如果coords<-as.data.frame(easting,northing)是我的数据集,那么我想计算 coords[i,] 之间的距离和coords[j,] 。哪里i , j是数据集中的行。

谢谢

最佳答案

您可以使用dist功能:

df  <- data.frame(easting=easting,northing = northing)
dist(df) # or round(dist(df,upper=T,diag=T),3)

前三行的示例:

round(dist(df[1:3,], upper=T,diag=T),3)

        1       2       3
1   0.000 310.409 581.588
2 310.409   0.000 271.221
3 581.588 271.221   0.000

比较:

round(dist(df[1:3,]),3)

        1       2
2 310.409        
3 581.588 271.221

关于r - 点矩阵之间的距离,简单的 if 和 for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45545579/

相关文章:

Python Numpy - 矩阵内存错误和限制

c - 将函数返回的指针作为输入传递给其他函数时如何避免内存泄漏?

matrix - 投影矩阵在平面上投影一个点

language-agnostic - 点与线段之间的最短距离

r - 使用网格时如何停止 R 绘图轴标签中的上标

r - 如何在 R Shiny 中显示带有输入的简单数据框

r - 在 R 中绘制二元和连续值的多重逻辑回归

r - xlim 和 x 轴在 barplot 中不一样

python - 通过算法生成 STL(3-D 几何文件)的最佳工具?

javascript - JavaScript 中的二维透视变换