0
我正在嘗試計算社交網絡用戶之間的測地距離。假設我有2個用戶U1和U2,我該如何去聲明R中的函數,以便測地距離函數返回由1000個用戶組成的大型數據集中的任意兩個用戶之間的距離。用戶組R中的測地距離函數
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中的函數定義中聲明兩個用戶(經度,緯度)協調員。是否有任何其他方式來做到這一點,以便說如果我有1000個用戶的數據集我可能能夠計算測地線任何2個用戶之間的距離。
謝謝你的回答。它運作良好,但我可以做到沒有規範,是否有任何特定的原因,r規範的平均值爲46和長期爲14。 – Bruno 2015-02-18 18:39:31
我只是作爲一個(隨機)數據發生器使用rnorm。在你的情況下,一個lon矢量將從某個數據庫產生 – bergant 2015-02-18 19:05:44
我已經從一個數據集中讀取了我的lon1,lat1,類似於lon2,lat2從另一個數據集到上面的distm函數。那麼我會讀什麼緯度。我有點困惑,因爲在#位置和cmat矩陣中只有一個經緯度 – Bruno 2015-02-19 00:28:11