【发布时间】:2016-10-11 02:52:00
【问题描述】:
有 43000 对坐标,正如您可以想象的那样,使用下面的嵌套循环运行这是一个非常漫长的过程,我只是不知道如何使这项工作更快并排除循环。
以下是我的代码,它基于我在网上找到的内容以及我对使用 R 的基础知识非常古老且有限的知识。请教我如何在更高效、更优雅的代码块中完成此操作,以帮助我完全有可能。
for (i in 1:length(FixedAssets$Lat)) {
for (p in 1:length(FixedAssets$Lat)) {
dist <- distCosine(as.vector(c(FixedAssets$Longitude[i],FixedAssets$Latitude[i]), mode = "any"), as.vector(c(FixedAssets$Longitude[p],FixedAssets$Latitude[p]), mode = "any"), r = 6378137)
if (dist < 200) { FixedAssets$prox200[i] = FixedAssets$prox200[i] + 1 }
if (dist < 500) { FixedAssets$prox500[i] = FixedAssets$prox500[i] + 1 }
if (dist < 1000) { FixedAssets$prox1000[i] = FixedAssets$prox1000[i] + 1 }
if (dist < 2000) { FixedAssets$prox2000[i] = FixedAssets$prox2000[i] + 1 }
if (dist < 3000) { FixedAssets$prox3000[i] = FixedAssets$prox3000[i] + 1 }
if (dist < 5000) { FixedAssets$prox5000[i] = FixedAssets$prox5000[i] + 1 }
if (dist < 10000) { FixedAssets$prox10000[i] = FixedAssets$prox10000[i] + 1 }
if (dist < 20000) { FixedAssets$prox20000[i] = FixedAssets$prox20000[i] + 1 }
}
print(i)
}
【问题讨论】: