【发布时间】:2018-11-05 12:50:49
【问题描述】:
我在 R 中有 2 个大型数据框,它们都有大约 100k 行,其中包含地理坐标列表(纬度/经度)。我希望遍历它们以获取项目之间的所有组合,然后对其应用函数。
因为组合的数量大约是 110 亿(11 x 1.000.000.000),所以我最初使用循环的想法不适用。
数据框类似于:
A<-as.data.frame(cbind(rbind(-0.1822,-0.4419,0.2262),rbind(51.5307,51.4856,51.4535)))
(...)
<!-- -->
V1 . V2
-0.1822 . 51.5307
-0.4419 . 51.4856
0.2262 . 51.4535
B<- as.data.frame(cbind(rbind(-0.4764,-0.2142,-0.2197),rbind(51.5221,51.4593,51.5841)))
(...)
<!-- -->
V1 . V2
-0.4764 . 51.5221
-0.2142 . 51.4593
-0.2197 . 51.5841
我希望输出看起来像:
V1a . V2a . V1b . V2b
-0.1822 . 51.5307 . -0.4764 . 51.5221
-0.4419 . 51.4856 . -0.4764 . 51.5221
0.2262 . 51.4535 . -0.4764 . 51.5221
-0.1822 . 51.5307 . -0.2142 . 51.4593
-0.4419 . 51.4856 . -0.2142 . 51.4593
(...)
stackoverflow 中的另一篇文章([a link]Calculating great-circle distance matrix)建议使用:
应用(A, 1, FUN=function(X) distHaversine(X, B))
但是,我怀疑创建的矩阵太大而无法完成计算。
关于如何有效解决这个问题的任何想法?请记住,此后我的目标是应用 Haversine 函数来计算点之间的距离。
谢谢 J
【问题讨论】:
-
你试过
combn()吗? -
是的,我看过它,但并不完全奏效。您使用它的方法是什么?最好的问候
-
顺便说一句 cran.r-project.org/web/packages/geodist/index.html 可以在这里为您提供帮助。
-
两个data.frames都只包含数字吗?
-
是的,这些都是数字
标签: r combinations permutation large-data geosphere