Теоретический предел вектора в R составляет 2147483647 элементов. Это примерно 1 миллиард строк / 2 столбцов.
... но этот объем данных не помещается в 4 ГБ памяти ... И особенно не в строках в символьном векторе. Каждая строка имеет длину не менее 96 байт (object.size('a') == 96
), и каждый элемент в вашей матрице будет указателем (8 байт) на такую строку (хотя существует только один экземпляр каждой уникальной строки).
Так что обычно происходит то, что машина начинает использовать виртуальную память и начинает подкачку. Тяжелая замена обычно убивает все надежды когда-либо закончить в этом столетии - особенно на Windows.
Но если вы используете пакет (igraph?) И просите его создать матрицу, он, вероятно, выполняет много внутренней работы и создает множество вспомогательных объектов. Таким образом, даже если вы не приблизились к пределу памяти для матрицы одного результата, алгоритм, используемый для ее создания, может исчерпать память. Он также может быть нелинейным (квадратичным или хуже) во времени, что снова лишит всякую надежду когда-либо закончиться в этом столетии ...
Хорошим способом исследования может быть определение времени на маленьком графике (например, с использованием system.time
) и еще раз при удвоении размера графика пару раз. Затем вы можете увидеть, является ли время линейным или квадратичным, и вы можете оценить, сколько времени займет заполнение вашего большого графика. Если прогноз говорит неделю, ну, тогда вы знаете; -)