小编Ana*_*Ana的帖子

R:大数据的区别?计算两个矩阵之间的最小距离

我有两个矩阵,一个是200K行,另一个是20K.对于第一个矩阵中的每一行(也就是一个点),我试图找到第二个矩阵中哪一行(也是一个点)最接近第一个矩阵中的点.这是我在样本数据集上尝试的第一种方法:

#Test dataset
pixels.latlon=cbind(runif(200000,min=-180, max=-120), runif(200000, min=50, max=85))
grwl.latlon=cbind(runif(20000,min=-180, max=-120), runif(20000, min=50, max=85))
#calculate the distance matrix
library(geosphere)
dist.matrix=distm(pixels.latlon, grwl.latlon, fun=distHaversine)
#Pick out the indices of the minimum distance
rnum=apply(dist.matrix, 1, which.min)
Run Code Online (Sandbox Code Playgroud)

但是,Error: cannot allocate vector of size 30.1 Gb当我使用该distm功能时出现错误.

关于这个主题有几个帖子:

这个bigmemory用于计算SAME数据帧中各点之间的距离,但我不确定如何调整它来计算两个不同矩阵中点之间的距离... https://stevemosher.wordpress.com/2012/04/12 /缺口司托克斯-距离代码现在与-大存储器/

这个也适用于计算SAME矩阵中各点之间的距离矩阵... 用于重复距离矩阵计算的高效(记忆方式)函数和超大距离矩阵的分块

这个与我想做的几乎完全相同,但他们实际上没有提出适用于大数据的解决方案:R:使用大内存的distm我试过这个方法,它使用bigmemory但是得到Error in CreateFileBackedBigMatrix(as.character(backingfile), as.character(backingpath), : Problem creating filebacked matrix.错误,我认为因为数据帧太大了.

有没有人想出这个问题的好方法?我对其他包装的想法持开放态度!

更新了解决问题的代码

pixels.latlon=cbind(runif(200000,min=-180, max=-120), runif(200000, min=50, max=85))
grwl.tibble = tibble(long=runif(20000,min=-180, max=-120), lat=runif(20000, min=50, …
Run Code Online (Sandbox Code Playgroud)

r great-circle r-bigmemory geosphere

3
推荐指数
1
解决办法
552
查看次数

标签 统计

geosphere ×1

great-circle ×1

r ×1

r-bigmemory ×1