2016-11-01 4 views
1

Ich muss einige R-Daten in formatierte Excel-Dateien exportieren und habe zuvor sowohl die XLConnect- als auch die xlsx-Pakete in R verwendet. Ich bin vor kurzem zu 64 Bit R umgezogen und kann nicht arbeiten. Ich habe einige Oracle/Java-Architekturkonflikte in einer Reihe anderer Pakete durchgearbeitet. Ich bin mir sicher, dass hier etwas ähnliches passiert, aber ich kann es nicht knacken.XLConnect: Anhängen an 64 Bit R

wenn ich rufe library(XLConnect), rJava und XLConnectJars anhängen ohne Problem.

Hier ist der Fehler und Sitzungsinfo:

> 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  

ich einen ähnlichen Fehler, wenn ich versuche xlsx zu befestigen.

> 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’ 

Wenn ich auf 32-Bit-R-Schalter, alles läuft sowohl fein mit XLConnect und xlsx. Ich brauche wirklich 64 Bit R für andere Anforderungen.

+0

Ich benutze 'readxl', um Excel-Dateien zu importieren - kein Problem. Ich habe nur ein paar Projekte, die formatierte Excel-Ausgaben erfordern. Meine 'JAVA_HOME'-Variable zeigt auf einen 64-Bit-JRE. 'rJava' lädt gut - das sollte das 64-bit Java sein. –

Antwort

1

Ohne in technischen zu bekommen, müssen Sie eine 64-Bit-Version von Java mit der 64-Bit-Version von R. gehen

Auch wenn dies die Frage lösen wird Sie auf dem Laufenden, ich glaube, Sie geholfen wird mehr durch den Verzicht auf die Java-basierten XLConnect und xlsx-Pakete für die Verbindung zu Excel. Verwenden Sie stattdessen das -Paket. Es macht das gleiche Zeug (ja, exportiert auch formatierte Excel-Blätter) wie die anderen beiden, aber nicht auf Java angewiesen.

Neben der 64-Bit/32-Bit-Problem mit Java nicht mit, gibt es einige Vorteile:

Erstens, während bei großen Tabellen arbeiten, werden Sie nicht mit OutOfMemoryErrors konfrontiert:

Error: OutOfMemoryError (Java): GC overhead limit exceeded.

Zweitens, auch wenn die Java-basierten Pakete keine Fehler zeigen, kann es ewig dauern, bis sie mit großen Tabellen arbeiten. openxlsx hat diese Probleme nicht.

Zu einem letzten und persönlichen Hinweis: Ich zögerte zunächst, zwischen Paketen zu wechseln, aber es löste alle Dinge, die ich an den Java-basierten Paketen nicht mochte und die Syntax ist sehr ähnlich.