Я пытаюсь выполнить анализ социальной сети в R, и у меня возникают некоторые проблемы с созданием матриц смежности из очень больших матриц с использованием пакета igraph.Одна из основных матриц - 10998555876 элементов большого размера (82 ГБ), созданная из набора данных с 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 base.Мне кажется (не будучи экспертом в этих вопросах), что igraph пытается создать объект в формате, который R не может обработать, потому что он слишком большой (?) Кто-нибудь знает, как решить эту проблему?Возможно, есть другие пакеты для создания матриц смежности, которые лучше справились бы с большой матрицей?