5

我正在使用该dist {stats}函数来计算点之间的距离,我的问题是我有 24469 个点,并且 dist 函数的输出给了我一个长度为 18705786 的向量,而不是矩阵。我已经尝试过 export as.matrix,但文件是 2 大。

我如何才能访问每个距离对应的点?

例如which(distance<=700)给我向量中的位置,但我怎样才能得到这个距离对应的点的信息?

4

1 回答 1

5

您可以尝试一些事情,也取决于您的确切需要:

  • 计算循环中的距离,并仅保留与标准匹配的距离。尤其是当匹配的数量远小于距离矩阵的总大小时,这样可以节省大量的 RAM 使用量。如果这个循环在纯 R 中实现,它可能非常慢,这也是为什么dist不使用 R 但我相信 C 来执行计算。这可能意味着您获得了结果,但必须等待一段时间。或者,优秀的Rcpp包可以让你用 C/C++ 写下来,可能会快得多。
  • 开始使用像bigmemory存储距离矩阵这样的包。然后你在一个循环中构建它并将它迭代地存储在 bigmemory 对象中(我之前没有使用过 bigmemory,所以我不知道确切的细节)。然后在构建矩阵之后,您可以访问它以提取您想要的结果。实际上,在 R 中处理大数据的所有技巧都适用于这个项目符号。参见例如R SO 关于大数据的帖子

一些有趣的链接(发现谷歌搜索r distance matrix for large vector):

于 2013-04-24T11:10:02.663 回答