У меня есть пользователи, которые не могут или не хотят подключаться к реляционным базам данных, но вместо этого предпочитают работать с данными, экспортированными в файлы Excel. Наборы записей, экспортированные из этих данных базы данных, могут стать довольно большими. (Я также экспортирую в файлы CSV).
Мой вопрос связан с этим: Обработка java.lang .OutOfMemoryError при записи в Excel из R.
Как рекомендовано в принятом ответе на этот вопрос (или, скорее, в первом комментарии), теперь я использую пакет openxlsx
на основе Rcpp для экспорта некоторых представлений из базы данных. Он работает, когда в экспорте ~ 67000 строк, но он не работает для больших наборов данных (~ 1 миллион строк, ~ 20 параметров, все числовые, за исключением нескольких значений даты).
openxlsx::write.xlsx(data, file = "data.2008-2016.xlsx") # 800000 rows
Error: zipping up workbook failed. Please make sure Rtools is installed or a zip application is available to R.
Try installr::install.rtools() on Windows
(Я использую ПК с Linux, и / usr / bin / zip доступен для R)
Могу ли я дать пакету openxlsx больше памяти? Или установить несколько настраиваемых параметров, чтобы лучше работать с большими наборами данных?
Есть ли что-то вроде options(java.parameters = "-Xmx1000m")
для пакета xlsx на основе java для openxlsx?
Виньетка openxlsx не упоминает никаких опций. Но может быть, есть недокументированные способы или варианты? (например, отображение индикатора выполнения во время сохранения)
На этом этапе я действую следующим образом: закрываю все ненужные приложения, перезапускаю Rstudio, оставляю мало / совсем не больших объектов в глобальной среде, запрашиваю db, затем запускаю write.xlsx()
. С таким «чистым списком» ему удалось экспортировать набор данных из 800000 строк в файл xlsx размером 93 МБ.
options(error=recover)
илиdebug(openxlsx::write.xlsx)
, чтобы точно определить проблему? - person Ben Bolker   schedule 23.12.2016