【发布时间】:2015-02-17 23:53:32
【问题描述】:
我正在尝试计算社交网络用户之间的测地线距离。假设我有 2 个用户 U1 和 U2,我该如何在 R 中声明该函数,以便测地距离函数从包含 1000 个用户的大型数据集中返回任意两个用户之间的距离。
d <- function (U1(lat1,lon1),U2(lat2,lon2))
{
rad <- pi/180
a1 <- lat1 * rad
a2 <- lon1 * rad
b1 <- lat2 * rad
b2 <- lon2 * rad
dlon <- b2 - a2
dlat <- b1 - a1
a <- (sin(dlat/2))^2 + cos(a1) * cos(b1) * (sin(dlon/2))^2
c <- 2 * atan2(sqrt(a), sqrt(1 - a))
R <- 6378.145
d <- R * c
miles <- d*0.621
return(c(d,miles))
}
上面的代码不起作用。我不确定如何在 R 中的函数定义中声明两个具有 (lat,lon) 坐标的用户。有没有其他方法可以做到这一点,如果我有 1000 个用户的数据集,我可能能够计算测地线任意 2 个用户之间的距离。
【问题讨论】:
标签: r function social-networking distance euclidean-distance