【发布时间】:2017-07-13 12:39:34
【问题描述】:
我有两个数据框,“a”和“b”。它们都有 gps 数据,但“a”有 1000 行,“b”有 5 行。我正在将距离与半正弦公式进行比较,但我想应用该函数,以便将“a”的每一行与“b”的每一行进行比较。我应该得到 5000 个结果。
这是我目前所拥有的,但它只给了我 1000 个结果:
library(geosphere)
for(i in 1:nrow(a)){
distHaversine(a[,c(11,9)],b[,c(4,2)])
}
提前感谢您的帮助。
编辑
我找到了一个更好的解决方案来减少代码和计算时间:
library(geosphere)
result <- distm(a[ , c(11, 9)], b[ , c(4, 2)], fun = distHaversine)
【问题讨论】:
-
你能分享你的数据集吗?试试
dput(a)和dput(b)。 -
数据集中的信息很敏感,但我认为它并不重要。 distHaversine() 函数工作正常,我只需要知道如何循环它,以便它将“a”的每一行应用于“b”的每一行
-
您是否只是忘记了 for 循环中的
i?a[i,c(11,9)], b[i,c(4,2)] -
你说得对,Jakob Gepp,我确实(愚蠢地)忘记了那部分。