具有大量点的dist函数

时间:2013-04-24 10:58:58

标签: r

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

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

例如which(distance<=700)给出了向量中的位置,但是如何获取该距离对应的信息?

1 个答案:

答案 0 :(得分:5)

你可以尝试一些东西,也取决于你需要的东西:

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

一些有趣的链接(找到r distance matrix for large vector的Google搜索):

相关问题