簡體   English   中英

如何將嵌套的 for 循環操作轉換為 R 中更高效的代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM