【发布时间】:2013-04-24 10:58:57
【问题描述】:
我正在使用dist {stats} 函数来计算点之间的距离,我的问题是我有 24469 个点,并且 dist 函数的输出给了我一个长度为 18705786 的向量,而不是矩阵。我已经尝试导出as.matrix,但文件是 2 大。
我怎样才能获得每个距离对应的点?
例如which(distance<=700) 给了我在向量中的位置,但是我怎样才能得到这个距离对应的点的信息呢?
【问题讨论】:
标签: r
我正在使用dist {stats} 函数来计算点之间的距离,我的问题是我有 24469 个点,并且 dist 函数的输出给了我一个长度为 18705786 的向量,而不是矩阵。我已经尝试导出as.matrix,但文件是 2 大。
我怎样才能获得每个距离对应的点?
例如which(distance<=700) 给了我在向量中的位置,但是我怎样才能得到这个距离对应的点的信息呢?
【问题讨论】:
标签: r
您可以尝试一些事情,具体取决于您的具体需求:
dist 不使用 R 但我相信 C 来执行计算。这可能意味着您获得了结果,但必须等待一段时间。或者,出色的 Rcpp 包可以让您用 C/C++ 写下来,这可能会快得多。bigmemory 这样的包来存储距离矩阵。然后你在一个循环中构建它并将它迭代地存储在 bigmemory 对象中(我以前没有使用过 bigmemory,所以我不知道确切的细节)。然后在构建矩阵之后,您可以访问它以提取您想要的结果。实际上,在 R 中处理大数据的所有技巧都适用于这个项目符号。参见例如R SO posts on big data。一些有趣的链接(在谷歌上搜索r distance matrix for large vector):
【讨论】: