如何将嵌套for循环操作转换为R中更高效的代码

如何将嵌套for循环操作转换为R中更高效的代码,r,for-loop,R,For Loop,说到R编码,我是个外行。我正在尝试为其中一个任务运行以下代码。我的基本目的是计算距离特定位置2公里范围内的景点数量,这两个景点都是由各自的经度和纬度指定的。主数据集中的记录数量约为29K,而景点数量为28个。如何将以下代码转换为性能更好的R代码(当前的代码非常粗糙,根本不是一个好的实践) for(1中的i:nrow(主数据)){ 属性计数[i]=0 loc_coord=c(主数据$经度[i],主数据$纬度[i]) 对于(j in 1:nrow(纽约大学景点)){ attr_coord=c(纽约景

说到R编码,我是个外行。我正在尝试为其中一个任务运行以下代码。我的基本目的是计算距离特定位置2公里范围内的景点数量,这两个景点都是由各自的经度和纬度指定的。主数据集中的记录数量约为29K,而景点数量为28个。如何将以下代码转换为性能更好的R代码(当前的代码非常粗糙,根本不是一个好的实践)

for(1中的i:nrow(主数据)){
属性计数[i]=0
loc_coord=c(主数据$经度[i],主数据$纬度[i])
对于(j in 1:nrow(纽约大学景点)){
attr_coord=c(纽约景点$lon[j],纽约景点$lat[j])
dist=distVincentySphere(attr_coord,loc_coord)

如果(dist您好,您的问题在这里得到了部分回答。因为您使用大地坐标(lat/lon)而不是投影坐标(米)它可以分为几步。首先,使用给定的答案使用欧几里得距离粗略地选择潜在的邻居,然后使用您的距离来优化选择。看起来您正在尝试操作空间数据。在包
sp
rgeos
sf
中,有很多资源可以做您想做的事情请给我们一个可复制的例子。请发布要处理的样本数据。同时发布预期结果是什么样子的Wesome!!不是部分,这完全回答了我的问题。但是,我仍然需要弄清楚它是否适用于经度和纬度而不是点。非常感谢您的帮助。非常感谢。很高兴见到您请听!如果你认为你的问题被回答了,请注明我的答案:
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
    } 
  }
}