【问题标题】:dist function with large number of points具有大量点的 dist 函数
【发布时间】:2013-04-24 10:58:57
【问题描述】:

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

我怎样才能获得每个距离对应的点?

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

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以尝试一些事情,具体取决于您的具体需求:

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

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

    【讨论】:

      猜你喜欢
      • 2021-09-20
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 2016-10-22
      • 2017-03-27
      • 2018-07-18
      • 1970-01-01
      相关资源
      最近更新 更多