Длинные векторы ошибки igraph пока не поддерживаются при попытке создать матрицу смежности - PullRequest
1 голос
/ 27 сентября 2019

Я пытаюсь выполнить анализ социальной сети в 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 не может обработать, потому что он слишком большой (?) Кто-нибудь знает, как решить эту проблему?Возможно, есть другие пакеты для создания матриц смежности, которые лучше справились бы с большой матрицей?

...