2014-10-27 4 views
9

Ich versuche, ein Excel-Blatt in r importieren. Ich habe den folgenden Code:Fehler in XLConnect

x <- loadWorkbook("x.xlsx") 
b <- readWorksheet(x, sheet="b") 

Die erste Zeile funktioniert gut, jedoch gibt die zweite Ausführung des folgenden Fehler:

Error in (function (classes, fdef, mtable) : 
    unable to find an inherited method for function ‘readWorksheet’ for signature ‘"jobjRef", "character"’ 

Ich habe keine fehlenden Werte in diesem Blatt.

Zum Zweck der Wiedergabe herunterladen trial.xlsx von https://github.com/ahmedfsalhin/1stpaper.

Systeminfo: Yosemite-Betriebssystem.

+0

Es wäre sehr hilfreich, einen Link zu einer Beispielarbeitsmappe zu veröffentlichen, die dies verursacht. Das heißt, Yosemite ist brandneu; Möglicherweise müssen Sie Java neu installieren und/oder auf neue CRAN-Builds von 'Rjava' warten. –

+0

@CarlWitthoft Ich habe gerade die Frage mit einem Link zu Excel-Datei aktualisiert zu reproduzieren. – athraa

+0

@CarlWitthoft Ich habe auf Java Development Kit 8 (JDK 8) aktualisiert und nach der erneuten Installation von XLConnect funktioniert es jetzt gut. – athraa

Antwort

12

Es scheint die "Ursache" zu sein, dass Sie Code hinzufügen sollten, um sowohl die Funktion als auch das Paket anzugeben, zu dem es gehört. Geben Sie XLConnect::loadWorkbook ein, um in diesem Fall die gewünschte auszuwählen. Es gibt keine "Verwechslung" oder zufällige Auswahl von doppelten Funktionsnamen in R. Die Auswahl hängt von der Ladereihenfolge aller geladenen Pakete ab. Verwenden Sie search(), um die Reihenfolge anzuzeigen, in der Pakete für den eingegebenen Befehl überprüft werden.

Z. B. gegenwärtig I

search() 
[1] ".GlobalEnv"   "package:caTools"  
[3] "package:XLConnect"  "package:XLConnectJars" 
[5] "package:stats"   "package:graphics"  
[7] "package:datasets"  "package:vecsets"  
[9] "package:cgwtools"  "package:grDevices"  
[11] "package:utils"   "package:methods"  
[13] "Autoloads"    "package:base" 

Sie erhalten werden, dass alles in Ihrer Umgebung bemerken (.GlobalEnv) zuerst ausgewählt, und dass alle geladenen Bibliotheken überschreiben das base Paket, zum Beispiel.

6

Nach viel Kampf fand die Lösung dafür. In R studio gehen Sie zu den Paketen und entfernen Sie alle Pakete, die mit XLConnect und xlsx in Verbindung stehen. Installieren Sie dann nur XLConnect-Pakete, indem Sie

eingeben

install.packages("XLConnect", dependencies=TRUE)

Danach sollte das Problem nicht bestehen.

5

hatte ich das gleiche Problem während drei für Dateien in R Laden .xlsx verschiedene Pakete testet (XLConnect, xlsx, gdata). Die Lösung war den Namespace für loadWorkbook angeben:

d3_wb = XLConnect::loadWorkbook("Megadataset_v3.xlsx") 
d3 = readWorksheet(d3_wb, 1) 

Dann funktioniert es, egal ob xlsx geladen/installiert oder nicht. Der Fehler ist, weil es auch eine Funktion mit dem gleichen Namen in xlsx gibt und es in der Voreinstellung ist, die falsche zu verwenden, die von der Reihenfolge abhängt, in der die Pakete geladen wurden.