r - 具有大量点的 dist 函数

标签 r

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

我怎样才能访问每个距离对应的点?

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

最佳答案

有一些事情你可以尝试,也取决于你到底需要什么:

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

  • 一些有趣的链接(在谷歌上搜索 r distance matrix for large vector ):
  • Efficient (memory-wise) function for repeated distance matrix calculations AND chunking of extra large distance matrices
  • (你很幸运!)http://stevemosher.wordpress.com/2012/04/08/using-bigmemory-for-a-distance-matrix/
  • 关于r - 具有大量点的 dist 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16190214/

    相关文章:

    r - 在R中创建具有相同轴的多个散点图

    r - table() 的 as.data.frame 总结频率

    r - 检查矩阵行是否等于 R 中的向量,向量化

    r - 在ggplot中绘制二维函数

    r - 将 ggpredict() 和 ggplot2() 与缩放的连续变量一起使用并尝试取消缩放它们

    r - ggplot2 中的不同分组条形图

    r - 如何重复返回数据帧的函数,然后将所有数据帧组合在一起?

    R 正则表达式 : isolate parenthesized suffix

    使用列本身中的文本重命名数据框列

    r - dplyr 的过滤器不适用于 lubridate 的时间格式?