【发布时间】:2020-11-14 11:11:49
【问题描述】:
我目前有一个数据框 (lang.py),其中有一对纬度和经度坐标。我正在使用 geosphere 包中的 distHaversine() 函数来执行此操作。
最初我尝试过:
lang.py$distance = with(lang.py, distm(cbind(lon_x, lat_x), cbind(lon_y, lat_y), distHaversine))
但这需要很长时间才能运行,因此我尝试查看前 4 行的输出,这些行输出 4x4 值矩阵,而不仅仅是距离值的单列,所以我假设整个数据集,我的代码输出了一个 25200x25200 的距离值矩阵。
例如,这是前 4 行输出的内容:
with(lang.py[1:4,], distm(cbind(lon_x, lat_x), cbind(lon_y, lat_y), distHaversine))
为了解决这个问题,我尝试采用矩阵的对角线来获取单列值:
lang.py$distance = diag(with(lang.py, distm(cbind(lon_x, lat_x), cbind(lon_y, lat_y), distHaversine)))
但这也需要很长时间才能运行。关于如何提高效率的任何想法?我试图找到(lat_x,lon_x)和(lat_y,lon_y)之间的距离。谢谢
【问题讨论】:
-
请不要发布代码/数据/错误的图像:它不能被复制或搜索 (SEO),它会破坏屏幕阅读器,并且它可能不适合某些移动设备。参考:meta.stackoverflow.com/a/285557(和xkcd.com/2116)。请直接包含代码、控制台输出或数据(例如,
dput(head(x))或data.frame(...))。