R 如何计算数据帧中两个连续点之间的距离和角度?

R 如何计算数据帧中两个连续点之间的距离和角度?,r,distance,R,Distance,我有R的数据框: my_data_points <- data.frame(x = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), y = c(10, 9, 8, 7, 6, 6, 7, 8, 9, 10)) my_data_points使用已定义的默认计算欧氏距离矩阵的dist函数,并使用atan2获得两点之间的角度,我们可以得到以下结果: as.matrix(距离(我的数据点))->mat c(mat[行(mat)=col(mat)+1],NA)->my_dat

我有R的数据框:

my_data_points <- data.frame(x = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
 y = c(10, 9, 8, 7, 6, 6, 7, 8, 9, 10))

my_data_points使用已定义的默认计算欧氏距离矩阵的
dist
函数,并使用
atan2
获得两点之间的角度,我们可以得到以下结果:

as.matrix(距离(我的数据点))->mat
c(mat[行(mat)=col(mat)+1],NA)->my_data_points$dists
my_数据_点%>%突变(角度=c(atan2(差异(x),差异(y)),NA)*180/pi)
x y距离角
1   1 10 1.414214   135
2   2  9 1.414214   135
3   3  8 1.414214   135
4   4  7 1.414214   135
5   5  6 1.000000    90
6   6  6 1.414214    45
7   7  7 1.414214    45
8   8  8 1.414214    45
9   9  9 1.414214    45
10纳

我们可以从
dplyr

library(dplyr)
my_data_points %>% 
       mutate(out = dist_func(x, lag(x), y, lag(y)))

您可以使用
my\u data\u points%>%mutate(new=map2(x,y,yourfun))
。如果您有要使用的功能,请在POST中更新角度,即p1、p2和平行于穿过P11的x轴的线之间的角度。我无法使用map2实现我的
dist_func
功能
dist_func(head(mydf$x,-1)、tail(mydf$x,-1)、head(mydf$y,-1)、tail(mydf$y,-$y,-1))
?应该是矢量化和快速的。
library(dplyr)
my_data_points %>% 
       mutate(out = dist_func(x, lag(x), y, lag(y)))