2016-03-24 6 views
1

Ich habe ein Problem mit XLConnect-Bibliothek. Seine system.file Funktion, ich habe nur gesehen mitXLConnect-Funktion übergibt kein Argument an system.file

file1 <- system.file(file, package ="XLConnect") 

wo Datei ist immer gleich einer Zeichenfolge. Allerdings habe ich eine Liste von Strings mit dem Dateinamen jeder Datei darin. Ich habe dies innerhalb einer for-Schleife, die durch die Liste iteriert. Aus irgendeinem Grund ist Datei1 leer, obwohl das Dateiobjekt das Äquivalent "soandso.xlsx" hat.

Also meine Frage ist, brauche ich Datei, um eine Zeichenfolge zu sein?

Bearbeiten # 1: Also wechselte ich von der Verwendung der XLConnect-Bibliothek, die mir einen separaten Fehler zu xlsx-Bibliothek gab und zumindest jetzt, kann ich den Code zum laufen zu bekommen, wenn auch mit verschiedenen Fehlern.

Ich denke, dass ich Fortschritte mache, weil ich den Code erfolglos über die erste Schleife hinaus laufen ließ (da k inkrementiert auf 2) und ich etwas meine Datenmengenvariable auffüllen ließ (wo ich die 'read.xlsx2' Antwort speicher).

Ich habe angebracht Screenshot von meinem aktuellen Fehler:

Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, : java.lang.IllegalArgumentException: Your InputStream was neither an OLE2 stream, nor an OOXML stream 

Screenshot of my R Studio

Edit # 2:

https://www.dropbox.com/s/s9413oee146v497/Q1%2C%202011%20-%20Halton%2C%20all%20home%20types.xlsx?dl=0 https://www.dropbox.com/s/tgaup2ihnlq7br2/Q4%2C%202015%20-%20Halton%2C%20condo%20types.xlsx?dl=0

I 2/60 Datei, die ich aufgenommen haben muss anhängen. Alle Dateien an meinem Zielort sind Excel-Dateien, die 10 Spalten breit sind und eine variable Zeilenlänge haben - aufgrund neuer Regionen oder nur Regionen, die gerade umbenannt werden. Der neue Fehler Ich erhalte ist:

Zusätzlich: Warnmeldung: In unzip (xlsxFile, exdir = xmlDir): Fehler 1 in Extrahieren von Zip-Datei

Edit # 3:

source('~/.active-rstudio-document', echo=TRUE)

> library("openxlsx") 

> file_list = list.files(pattern = "xlsx$") 

> dataset = data.frame() 

> for (file in file_list){ 
+ 
+ print(file) 
+ temp = read.xlsx(file,sheet = 1, colNames = F) 
+ temp$quarter = substr(file,1,2) 
+ temp$year = s .... [TRUNCATED] 
[1] "~$Q1, 2011 - Halton, all home types.xlsx" 
Error in file(con, "r") : invalid 'description' argument 
In addition: Warning message: 
In unzip(xlsxFile, exdir = xmlDir) : error 1 in extracting from zip file 

Sorry, aber ich habe immer noch Probleme, aber ich weiß, wo das Problem liegt. Aus irgendeinem Grund, was als Datei gedruckt wird, kommt mit "~ $" vor, wenn ich nur den Dateinamen "Q1, 2011 - Halton, alle home types.xlsx" als Datei eingeben, funktioniert es und ich bekomme Daten zu sein eingegeben in Datenrahmen. Nun ist das Problem mit diesem offensichtlich kann ich nicht Massenimport 60 verschiedene Excel-Namen ...

+0

Wenn Datei ist eine Liste, und diese Zeile ist innerhalb einer for-Schleife (mit Index k) dann versuchen Sie 'file [[k]]' –

+0

Ich bin mir nicht sicher, ob das den Folgefehler verursachen, aber ich nahm Ihren Rat und einen Zähler zu meiner Schleife hinzugefügt – user3042850

+0

Ditch mein Vorschlag, die 'file' Variable in der for-Schleife ist eine Zeichenfolge und ist korrekt. Aber, ist jede Datei in der Datei-Liste und Excel-Datei? –

Antwort

1

Versuchen Sie es mit openxlsx Bibliothek und den folgenden Code ein:

library("openxlsx") 

file_list = list.files(pattern = "xlsx$") 

dataset = data.frame() 

for (file in file_list){ 
    print(file) 
    temp = read.xlsx(file,sheet = 1, colNames = F) 
    temp$quarter = substr(file,1,2) 
    temp$year = substr(file,4,8) 
    dataset = rbind(dataset,temp) 
} 

Edit 1: Added a print (Datei) erkennen, welche xlsx-Datei Unzip-Probleme hat.

Bearbeiten 2: Hinzugefügte Quartal und Jahr Informationen durch Lesen von ihnen aus dem Dateinamen. Dies funktioniert nur, wenn alle Dateinamen demselben Muster folgen.

+0

'Zusätzlich: Warnmeldung: In unzip (xlsxFile, exdir = xmlDir): Fehler 1 beim Extrahieren von zip-Datei'/Fehler Ich werde weiter auf Ihren Beitrag in meinem Original antworten - zur besseren Formatierung Willen – user3042850

+0

Yeah hatte ich Um die Arbeitsmappe durch ein Excel-Makro zu bearbeiten, nur um die Daten schöner zu machen, aber danke für Ihre Hilfe! Seltsam ist, dass ich 'for (file in file_list [-1])' auch zur for-Schleife hinzufügen musste, weil der erste Eintrag in der Liste das '~ $' davor hatte – user3042850

Verwandte Themen