Недостаточно памяти в игре R's - PullRequest
0 голосов
/ 17 февраля 2012

Я нахожу матрицу коцитации большого графа (200К узлов):

cocitation(graph)

Тогда возникает проблема

Error in cocitation(graph):At vector.pmt:125 : cannot init vector, Out of memory

Как мне решить эту проблему?

Большое спасибо

Ответы [ 2 ]

3 голосов
/ 17 февраля 2012

Проблема в том, что igraph пытается выделить матрицу 200K x 200K для хранения результатов.Хотя большинство элементов в этой матрице, вероятно, являются нулями, у igraph нет отдельного типа данных с разреженной матрицей, поэтому он должен выделить часть памяти для размещения всех элементов 4 x 10 10 -что не сработает.

Поскольку весьма вероятно, что вам не нужна вся матрица сразу, и вместо этого вас интересует некоторая общая статистика этой матрицы, вы можете просто создать цикл for, которыйидет от нуля к числу вершин минус один (так как индексы igraph начинаются с нуля - обратите внимание, что для интерфейса R это изменится в 0,6), и вычислите одну строку матрицы коцитации:

2 голосов
/ 17 февраля 2012

Общее решение проблем нехватки памяти - одно из

  1. Сделайте что-нибудь умное с вашим кодом, чтобы он занимал меньше памяти.

  2. Купите больше оперативной памяти (зачастую дешевле, чем потраченное время).

  3. Распределить нагрузку между несколькими машинами, используя одну из параллельных пакеты.

  4. Используйте пакет bigmemory.

  5. Используйте подмножество вашего набора данных.

Я согласен с Яном Феллоузом, что последний вариант, вероятно, является лучшим вариантом в этом случае.

...