首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将嵌套的for循环操作转换为R中更高效的代码

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

Stack Overflow用户
提问于 2018-11-25 15:58:48
回答 1查看 42关注 0票数 0

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

代码语言:javascript
复制
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
    } 
  }
}

编辑:很抱歉没有早点说清楚。这是我想要实现的一个例子。我有两个数据集-

数据集-1 (NYC_attractions) (27条记录)

Dataset-2 (房屋列表的主数据) (29K记录)

现在,我需要在Dataset-2中再添加一个列(num_of_attractions),表示指定列表2 2Kms内的景点数量(即data set-2中的每个记录)。

希望,这解释了问题所在

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-11-26 04:19:47

你好,你的问题在这里得到了部分回答,https://stackoverflow.com/a/49860968/3042154。由于使用大地坐标(经度/经度)而不是投影坐标(米),因此可以按步骤完成。首先,使用给定答案使用欧几里得距离粗略地选择潜在邻居,然后使用您的距离改进选择

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53465664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档