距离原点指向空间

时间:2015-06-13 17:23:18

标签: r

我希望均衡从原点到所有点的距离,其中点由具有两个坐标的数据框给出。

我的所有观点都是:

           x      y
  1      0.0    0.0
  2     -4.0   -2.8
  3     -7.0   -6.5
  4     -9.0  -11.1
  5     -7.7  -16.9
  6     -4.2  -22.4
  7     -0.6  -27.7
  8      3.0  -32.5
  9      5.6  -36.7
  10     8.4  -40.8

为了获得距离,我将向量的欧几里德距离应用。我试过这个:

distance <- function(trip) {
     distance = lapply(trip, function (x) sqrt( (trip[x,]-trip[1,] )^2+ trip[,x]-trip[,1] )^2))
     return(distance)
 }

这也是:

distance = apply(trip,1, function (x) sqrt( (trip[x,]-trip[1,] )^2+ (trip[,x]-trip[,1] )^2))
return(distance)

2 个答案:

答案 0 :(得分:6)

无需使用apply功能遍历数据的各行。您可以使用R:

中的矢量化算法计算一次拍摄中的所有距离
(distance <- sqrt((trip$x - trip$x[1])^2 + (trip$y - trip$y[1])^2))
#  [1]  0.000000  4.882622  9.552487 14.290206 18.571484 22.790349 27.706497 32.638168 37.124790 41.655732

在有很多分数的情况下,使用矢量化操作一次计算所有距离会更快。

答案 1 :(得分:1)

矩阵距离计算有一个函数:

dist(trip, method = "euclidean")

如果您不期望距离矩阵,但只考虑从每个点到原点的距离,您可以将第1列as.matrix(dist(mat, method = "euclidean"))[1,]

分配