2016-05-06 1 views
0

Я искал подходящий ответ для своей проблемы, но не нашел точного или подходящего ответа.Экспорт большого символа в CSV-файл в R

У меня есть большой вектор символов (около 4 миллионов элементов, размером более 3 ГБ). Я хочу вывести/экспортировать этот вектор большого символа в виде файла CSV, в котором каждый элемент представляет строку.

Экспорт этого файла в write.table, write.csv или write.csv2 приводит к проблемам с распределением памяти.

На данный момент я пробовал пакет RSQLite и функцию fwrite от data.table. Оба, похоже, не работают по разным причинам.

  • Подход RQSLite занял 4 часа, и в итоге мне пришлось его убить.
  • Функция fwrite() запрашивает data.frame в качестве входных данных. Пытаясь принудить вектор большого символа к файлу data.frame, я снова столкнулся с проблемами памяти.

Кто-нибудь знает хороший подход к этой проблеме?

(я на 64-битной машине Windows, 16GB RAM, 500GB SSD и запустить R версии 3.2.5)

+0

Если вы находитесь в Windows, посмотрите на 'memory.size()' – epi99

+1

Что делать, если вы делаете 'x <- list (x); setDT (x) ', а затем использовать' fwrite'? Также проблемы с памятью? –

+0

Я бы сначала попробовал решение @docendodiscimus, и если у вас все еще есть проблемы, вы всегда можете разбить его на более мелкие кусочки, где вы делаете 100 000 элементов одновременно в цикле 'for'. – Benjamin

ответ

1

Как прокомментировал, вы можете быть в состоянии преобразовать вектор вашего персонажа x в list, а затем использовать data.table::setDT чтобы преобразовать его в data.tableпо ссылке, т.е. без копии. Поэтому было бы:

x <- list(x) 
library(data.table) 
setDT(x) 

Теперь вы можете использовать, например, data.table «s новый fwrite функцию, чтобы создать CSV-файл.

 Смежные вопросы

  • Нет связанных вопросов^_^