У меня есть 9 столбцов data.frame (x) и у вас есть миллионы строк. Я смог прочитать его в R, успешно внести в него некоторые изменения, и код будет выполняться без проблем. Однако, когда я пытаюсь записать его в файл .csv, используяОшибка памяти при использовании write.csv
write.csv(x,file=argv[2],quote=F,row.names=F)
я получаю ошибку, которая говорит
Error: cannot allocate vector of size 1.2Gb
Это не имеет никакого смысла, так как данные уже находятся в памяти, вычисления сделано , и все, что я хочу сделать, это записать его на диск. Кроме того, пока я контролировал память, размер виртуальной памяти почти удваивался для этого процесса во время этой фазы записи. Будет ли писать пользовательскую функцию C, чтобы выписать эту помощь data.frame? Любые предложения/рекомендации/указатели оценены.
ps: Я запускаю все это в 64-разрядном блоке ubuntu с около 24G RAM. Общее пространство не может быть проблемой. Размер данных составляет около 10G
Проще всего сделать это, чтобы записать его в файл небольшими частями, используя 'append = TRUE'. В остальном общая оперативная память, установленная на вашем компьютере, может быть вводящим в заблуждение индикатором того, будут ли у вас проблемы с памятью, поскольку R часто требуется _contiguous_ блоков памяти определенного размера. Даже с 24Gb, поиск 10 смежных Gb памяти может быть проблемой время от времени. – joran
Что сказал @joran. Вы можете попробовать 'gc()' сразу же, но вряд ли это поможет. –
Вы можете попробовать сохранить объект как изображение .RData и загрузить его в новый сеанс. По какой-то причине он потребляет меньше памяти, чем объект непосредственно после вычисления. Иногда я использую этот трюк, когда у меня возникают проблемы с памятью. –