[英]How to transform a nested for-loop operation to a more efficient code in R
在 R 編碼方面,我是個業余愛好者。 我正在嘗試為其中一項任務運行以下代碼。 我的基本目的是計算特定位置2kms附近的景點數量,兩個景點,位置由各自的經度和緯度指定。 主數據集中的記錄數約為 29K,而景點數為 28。如何將以下代碼轉換為性能更好的 R 代碼(當前的代碼非常粗糙,根本不是一個好習慣)
for(i in 1:nrow(mainData)) {
attr_count[i] = 0
loc_coord = c(mainData$longitude[i],mainData$latitude[i])
for(j in 1:nrow(ny_attractions)) {
attr_coord = c(ny_attractions$lon[j],ny_attractions$lat[j])
dist = distVincentySphere(attr_coord,loc_coord)
if(dist <= 2000) {
attr_count[i] = attr_count[i] + 1
}
}
}
[編輯]:我很抱歉沒有早點說清楚。 這是我試圖實現的一個例子。 我有 2 個數據集 -
數據集 - 1 (NYC_attractions)(27 條記錄)
數據集 2(房屋清單的主數據)(29K 記錄)
現在,我需要在 Dataset-2 中再添加一列 (num_of_attractions),表示指定列表 2Kms 內的景點數量(即數據集 2 中的每條記錄)
希望,這可以解釋問題
謝謝
您好,您的問題在這里得到了部分解答https://stackoverflow.com/a/49860968/3042154 。 當您使用大地坐標(緯度/經度)而不是投影坐標(米)時,可以分步完成。 首先使用給定的答案使用歐幾里德距離粗略選擇潛在鄰居,然后使用您的距離細化選擇
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.