Я бегу R 3.2.3 на машине с 128 ГБ ОЗУ. У меня есть большая матрица из 123028 строк х 168 столбцов. Я хотел бы использовать иерархический алгоритм кластеризации в R, поэтому, прежде чем я это сделаю, я пытаюсь создать матрицу расстояний в R, используя функцию vegdist() в пакете vegan с помощью метода Bray-Curtis. Я получаю ошибку о распределении памяти:R большая матрица расстояния в вегане
df <- as.data.frame(matrix(rnorm(20668704), nrow = 123028))
library(vegan)
mydist <- vegdist(df)
Ошибка в vegdist (DF): длинные векторы (аргумент 4) не поддерживаются в .Fortran
Если я использую пакет pryr для узнайте, сколько памяти требуется для матрицы расстояния, я вижу, что требуется 121 ГБ, что меньше, чем у ОЗУ, которое у меня есть.
library(pryr)
mem_change(x <- 1:123028^2)
121 GB
Я знаю, что раньше предел 2 млрд значений для одного объекта в R, но я думал, что предел исчез в последних версиях R. Есть другой лимит памяти, о котором я не знаю?
Суть в том, что мне интересно: что я могу сделать с этой ошибкой? Действительно ли это из-за ограничений памяти или я ошибаюсь? Я хотел бы остаться в R и использовать алгоритм кластеризации помимо k-средств, поэтому мне нужно вычислить матрицу расстояний.
Вы всегда можете вычислить его кусочно. –