【发布时间】:2020-01-27 20:01:09
【问题描述】:
我正在尝试在 R 中执行社交网络分析,但在使用 igraph 包从非常大的矩阵创建邻接矩阵时遇到了一些麻烦。主要矩阵之一是 10998555876 个大元素 (82 Gb) - 从具有 176881 行的数据集创建。
我在运行时遇到的错误:
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
数据是双模,所以我不得不转置它以获得具有我感兴趣的单位的单模矩阵。之前用于创建矩阵的代码是:
graph <- graph.data.frame(data, directed = FALSE) # Making a graph object from the dataframe.
types <- bipartite.mapping(graph)$type
matrix <- as_incidence_matrix(graph, types = type) # Creating a two-mode matrix.
one_mode_matrix <- tcrossprod(matrix) # Transposing to get one-mode matrix.
diag(matrix) <- 0
mode(matrix) <- "numeric"
adjacency_matrix <- graph.adjacency(one_mode_matrix, mode = "undirected", weighted = TRUE, diag = FALSE) # This is where things break down.
做过一些研究,例如在这个线程 https://github.com/igraph/rigraph/issues/255 中,它看起来像是 R 基础中的一个问题。在我看来(不是这些事情的专家)igraph 正试图以 R 无法处理的格式创建一个对象,因为它太大了(?)有人知道如何处理这个问题吗?也许还有其他用于创建邻接矩阵的包可以在大型矩阵上做得更好?
【问题讨论】:
标签: r matrix igraph adjacency-matrix network-analysis