R'中的内存不足;s曲线图
我发现一个大型图(200K个节点)的共生矩阵: 然后问题就出现了R'中的内存不足;s曲线图,r,memory,igraph,R,Memory,Igraph,我发现一个大型图(200K个节点)的共生矩阵: 然后问题就出现了 Error in cocitation(graph):At vector.pmt:125 : cannot init vector, Out of memory 我如何解决这个问题 非常感谢内存不足问题的一般解决方案是 用你的代码做一些聪明的事情,这样它就不会占用太多内存 买更多的公羊(通常比闲逛的时间便宜) 使用其中一个并联机构在多台机器之间分散负载 包裹 使用bigmemory软件包 使用数据集的子集 我同意Ian Fell
Error in cocitation(graph):At vector.pmt:125 : cannot init vector, Out of memory
我如何解决这个问题
非常感谢内存不足问题的一般解决方案是
bigmemory
软件包我同意Ian Fellows的观点,在这种情况下,最后一个选项可能是您的最佳选择。内存不足问题的一般解决方案是
bigmemory
软件包我同意Ian Fellows的观点,在这种情况下,最后一个选项可能是您的最佳选择。问题在于igraph试图分配一个200K x 200K矩阵来存储结果。尽管该矩阵中的大多数元素可能是零,但igraph没有单独的稀疏矩阵数据类型,因此它必须分配一块内存来容纳所有4 x 1010元素,这是行不通的 由于您很可能不需要一次使用整个矩阵,而是对该矩阵的一些常规统计信息感兴趣,因此您可以简单地创建一个从零到顶点数减1的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
}
for(0中的i:vcount(g)-1){
row问题在于igraph试图分配一个200K x 200K的矩阵来存储结果。虽然该矩阵中的大多数元素可能为零,但igraph没有单独的稀疏矩阵数据类型,因此它必须分配一块内存来容纳所有4 x 1010元素,这是行不通的
由于您很可能不需要一次使用整个矩阵,而是对该矩阵的一些常规统计信息感兴趣,因此您可以简单地创建一个从零到顶点数减1的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
}
for(0中的i:vcount(g)-1){
行创建一个200000×200000的矩阵是一个相当大的任务。尽管将来访问此页面的人会像“只有200k个节点?我可以在我的烤面包机上运行”一样,但请尝试获取您正在查看的顶点的协作信息(即协作(图,v=1)。创建一个200000 x 200000的矩阵是一个相当大的任务。请尝试获取您正在查看的顶点的协作信息(即协作(图,v=1),尽管将来访问此页面的人会像“只有200k个节点?我可以在我的烤面包机上运行它”。