【发布时间】:2019-12-08 12:08:22
【问题描述】:
我正在处理 39000+ 个数据点,我正在计算一个点与其中每个点之间的距离,从而产生一个消耗 11GB 的 (39000+)^2 矩阵(我不能在内存中分配它)。
很棒的是,我们有 dist 函数,可以让我将其减少到略低于 6GB。但是现在,我需要计算以 2 为动力的反距离,然后对每一行进行正则化,使它们总和为 1。这是必要的,因为我稍后将矩阵的每一行乘以一个向量并存储这个结果。所以,大矩阵其实是暂时的东西。
我的问题是,如何提取这个dist 矩阵的行?
使用dist(cbind(runif(5),runif(5)) 获得的样本“dist”矩阵
1 2 3 4
2 0.47
3 0.63 0.72
4 0.79 0.62 0.37
5 0.53 0.15 0.62 0.48
我正在寻找的是提取整个第一行,例如:
0 0.47 0.63 0.79 0.53
【问题讨论】:
-
第一行很简单,
c(0, d[1:attr(d, "Size")]),但之后就变得更复杂了。可能有人会展示一个非常聪明的解决方案。 -
感谢您的回答。
-
也许查看 {bigdist} 包可能会有所帮助 (talegari.github.io/bigdist) -> 将您的数据存储在磁盘上。
标签: r performance matrix distance