0

我找到了一个大图(200K 节点)的共引矩阵:

cocitation(graph)

然后出现问题

Error in cocitation(graph):At vector.pmt:125 : cannot init vector, Out of memory

我该如何解决这个问题?

非常感谢

4

2 回答 2

3

问题是 igraph 试图分配一个 200K x 200K 矩阵来存储结果。尽管该矩阵中的大多数元素可能为零,但 igraph 没有单独的稀疏矩阵数据类型,因此它必须分配一块内存来容纳所有 4 x 10 10元素 - 这是行不通的.

由于您很可能一次不需要整个矩阵,并且您对该矩阵的一些一般统计数据感兴趣,因此您可以简单地创建一个从零到顶点数减一的 for 循环(因为 igraph索引从零开始 - 请注意,对于 R 接口,这将在 0.6 中发生变化),并计算同引矩阵的单行:

for (i in 0:vcount(g)-1) {
    row <- cocitation(g, v=i)
    # Do whatever you want with the row here
}
于 2012-02-17T10:22:05.790 回答
2

内存不足问题的一般解决方案是

  1. 用你的代码做一些聪明的事情,这样它就不会占用大量内存。

  2. 购买更多的 RAM(通常比花时间花时间更便宜)。

  3. 使用其中一个并行包在多台机器之间分散负载。

  4. 使用bigmemory包。

  5. 使用数据集的子集。

我同意 Ian Fellows 的观点,在这种情况下,最后一个选项可能是你最好的选择。

于 2012-02-17T08:18:41.883 回答