【发布时间】:2019-04-27 04:28:14
【问题描述】:
在 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
}
}
}
[编辑]:我很抱歉没有早点说清楚。这是我想要实现的一个例子。我有 2 个数据集 -
数据集 - 1(NYC_attractions)(27 条记录)
Dataset-2(房屋列表的主数据)(29K 记录)
现在,我需要在 Dataset-2 中再添加一列 (num_of_attractions),表示指定列表 2Kms 内的景点数量(即 data set-2 中的每条记录)
希望,这可以解释问题
谢谢
【问题讨论】:
-
您似乎正在尝试操作空间数据。在包
sp、rgeos或sf中有很多资源可以做您想做的事情。请给我们一个可重现的例子。 -
请发布示例数据以供使用。同时发布预期结果应该是什么样子