Подтвердить что ты не робот

"Ошибка при отсутствии памяти (Java)" при использовании пакетов R и XLConnect

Я попытался загрузить электронную таблицу Excel 30 МБ в R, используя пакет XLConnect.

Вот что я написал:

wb <- loadWorkbook("largespreadsheet.xlsx")

И примерно через 15 секунд я получил следующую ошибку:

Ошибка: OutOfMemoryError (Java): превышен верхний предел GC.

Является ли это ограничением пакета XLConnect или есть способ изменить настройки моей памяти, чтобы разрешить использование больших файлов?

Я ценю любые решения/советы/советы.

4b9b3361

Ответ 1

Следуйте советам на веб-сайте:

options(java.parameters = "-Xmx1024m")
library(XLConnect)

Ответ 2

Если у вас все еще есть проблемы с импортом файлов XLSX, вы можете использовать этот opiton. Anwser с "Xmx1024m" не работал, и я изменился на "-Xmx4g".

options(java.parameters = "-Xmx4g" )
library(XLConnect)

Эта ссылка была полезной.

Ответ 3

Используйте read.xlsx() в пакете openxlsx. Он не имеет зависимости от rJava, поэтому имеет только ограничения памяти самого R. Я не разбирался в большой глубине для написания и форматирования XLSX, но у него есть многообещающие смотрящие виньетки. Для чтения больших электронных таблиц он работает хорошо.

Кончик шляпы до Брэд-Хорна. Я только что передал свой комментарий в качестве ответа, потому что я также нашел, что это лучшее решение!

Ответ 4

Если кто-то сталкивается с этой ошибкой при чтении не одного огромного, но большого количества файлов, мне удалось решить эту ошибку, освободив память виртуальной машины Java с помощью xlcFreeMemory(), таким образом:

files <- list.files(path, pattern = "*.xlsx")
for (i in seq_along(files)) {
    wb <- loadWorkbook(...)
    ...
    rm(wb)
    xlcFreeMemory()  # <= free Java Virtual Machine memory !
}

Ответ 5

Это похоже на случай, когда вы снова и снова используете один и тот же R-сеанс без перезапуска R-Studio. Перезапуск R-Studio может помочь выделить новую кучу памяти для программы. Это сработало для меня сразу.

Ответ 6

Как предложено здесь, убедитесь, что вы запустите функцию опции в первой строке вашего кода. В моем случае он работал только тогда, когда я перезапустил сеанс R и запустил его в первой строке.

options(java.parameters = "-Xmx4g" )
library(XLConnect)

Ответ 7

Всякий раз, когда вы используете библиотеку, которая полагается на rJava (например, RWeka в моем случае), вы будете вынуждены ударить по умолчанию в кучу пространства (512 МБ). Теперь, когда вы используете Java, мы все знаем аргумент JVM для использования (-Xmx2048m, если вы хотите 2 гигабайта ОЗУ). Здесь речь идет только о том, как указать его в среде R.

   options(java.parameters = "-Xmx2048m")
   library(rJava)