我希望均衡从原点到所有点的距离,其中点由具有两个坐标的数据框给出。
我的所有观点都是:
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)
答案 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,]