XLConnect: подключение к 64-битному R

Мне нужно экспортировать некоторые данные R в форматированные файлы Excel, и я ранее успешно использовал пакеты XLConnect и xlsx в R. Я недавно перешел на 64 бит R и не могу заставить ни работать. Я работал через некоторые конфликты архитектуры Oracle/Java в куче других пакетов. Я уверен, что здесь происходит нечто подобное, но я не могу взломать это.

когда я звоню library(XLConnect), rJava а также XLConnectJars прикрепить без проблем.

Вот информация об ошибке и сессии:

> library(XLConnect)
Loading required package: XLConnectJars
Error : .onLoad failed in loadNamespace() for 'XLConnect', details:
  call: .jfindClass(as.character(class))
  error: class not found
Error: package or namespace load failed for ‘XLConnect’

> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] XLConnectJars_0.2-12

loaded via a namespace (and not attached):
[1] rsconnect_0.4.3 tools_3.3.1     rJava_0.9-8    

Я получаю похожую ошибку при попытке присоединить xlsx,

> library(xlsx)
Loading required package: rJava
Loading required package: xlsxjars
Error : .onAttach failed in attachNamespace() for 'xlsx', details:
  call: .jnew("org/apache/poi/xssf/usermodel/XSSFWorkbook")
  error: java.lang.UnsupportedClassVersionError: Bad version number in .class file
Error: package or namespace load failed for ‘xlsx’

Если я переключаюсь на 32 бит R, все работает нормально с обоими XLConnect а также xlsx, Мне действительно нужно запустить 64-битную R для других требований.

1 ответ

Не вдаваясь в технические подробности, вам потребуется 64-битная версия Java для работы с 64-битной версией R.

Несмотря на то, что это решит вопрос, который вы разместили, я думаю, вам больше поможет отказ от Java-приложений. XLConnect а также xlsx-пакеты для подключения в Excel. Вместо этого используйте openxlsx-package. Он выполняет те же функции (да, также экспортирует отформатированные таблицы Excel), что и два других, но не зависит от Java.

Помимо отсутствия 64-битной /32-битной проблемы с Java, есть некоторые преимущества:

Во-первых, при работе с большими таблицами вы не столкнетесь с OutOfMemoryErrors:

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

Во-вторых, даже если пакеты на основе Java не показывают ошибок, им может потребоваться много времени для работы с большими таблицами. openxlsx не имеет этих проблем.

И последнее, личное замечание: сначала я не решался переключаться между пакетами, но это решило все, что мне не понравилось в пакетах на основе Java, и синтаксис очень похож.

Другие вопросы по тегам