我正在尝试在R中执行社交网络分析,并且在使用igraph包从非常大的矩阵创建邻接矩阵时遇到了一些麻烦。主要矩阵之一是10998555876元素大(82 Gb),它是从具有176881行的数据集中创建的。
运行时出现错误:
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
value = 'true'
changeValue() {
this.value = this.value === 'true' ? 'false' : 'true'
}
}
如下:
adjacency_matrix <- graph.adjacency(one_mode_matrix, mode = "undirected", weighted = TRUE, diag = TRUE)
数据是双模式的,因此我不得不对其进行转置以获得具有我感兴趣的单位的单模式矩阵。创建矩阵之前使用的代码是:
Error in graph.adjacency.dense(adjmatrix, mode = mode, weighted = weighted, :
long vectors not supported yet: ../../src/include/Rinlinedfuns.h:519
做过一些研究,例如在该线程https://github.com/igraph/rigraph/issues/255中,它看起来像是R base中的问题。在我看来(没有这方面的专家),igraph试图以R不能处理的格式创建对象,因为R太大(?)有人知道如何处理此问题吗?也许还有其他用于创建邻接矩阵的软件包,它们可以在大型矩阵上做得更好?
答案 0 :(得分:0)
对任何有兴趣的人的解决方案:
我发现igraph可以处理稀疏矩阵。使用Matrix包将矩阵转换为稀疏矩阵,如下所示:
sparse_matrix <- as(one_mode_matrix, "sparseMatrix")
然后将其变成这样的图形对象:
g <- graph_from_adjacency(sparse_matrix)
igraph必须提供的所有功能都很简单。