当涉及到R编码时,我是一个外行。我正在尝试为其中一个任务运行以下代码。我的基本目的是计算特定位置附近2公里内的景点数量,这两个景点都是由各自的经度和纬度指定的。主数据集中的记录数量约为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
}
}
}编辑:很抱歉没有早点说清楚。这是我想要实现的一个例子。我有两个数据集-
数据集-1 (NYC_attractions) (27条记录)

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

现在,我需要在Dataset-2中再添加一个列(num_of_attractions),表示指定列表2 2Kms内的景点数量(即data set-2中的每个记录)。
希望,这解释了问题所在
谢谢
发布于 2018-11-26 04:19:47
你好,你的问题在这里得到了部分回答,https://stackoverflow.com/a/49860968/3042154。由于使用大地坐标(经度/经度)而不是投影坐标(米),因此可以按步骤完成。首先,使用给定答案使用欧几里得距离粗略地选择潜在邻居,然后使用您的距离改进选择
https://stackoverflow.com/questions/53465664
复制相似问题