2017-07-11 4 views
0

1) Ich habe 48 tar.gz Dateien in einem Verzeichnis "C:/Users/Me/Desktop/JUNETEST /". Die Dateien haben alle das gleiche Format mit Ausnahme einer Zahl, die die Stunde des Tages für jede Datei darstellt (dh voa_20170601-110000.tar.gz im Gegensatz zu voa_20170601-120000.tar.gz. Ich muss importieren alle 48 Dateien und entpacken Sie die Dateien und ziehen Sie nur die Datei mit dem gleichen Namen in jeder ".tar.gz". Der Name ist "hit_data.tsv". Ich möchte jeder "hit_data.tsv" als Element zuweisen in einer Liste von Datenrahmen Mein Code scheint alle 48 Dateien korrekt zu entzippenWie ordnen Sie Datenrahmen mit einer Schleife in r Spaltenüberschriften zu?

Das Problem ist jedoch beim Lesen der Datei hit_data.tsv.Es versucht, in jeder Spalte zu lesen, hat aber Probleme, weil es keine Spalte gibt Header, so dass es nur die erste Spalte liest Wenn ich jede Datei einzeln ziehe, würde ich die colnames (hit_da ta.tsv) der Wert eines Vektors namens Headers. Jede Datei hat die gleichen Spaltennamen, so dass der Header-Vektor auf jede hit_data.tsv-Datei angewendet werden kann. Meine Frage ist, wie ordne ich die Spaltennamen jeder Datei während der Schleife zu? Oder wie korrigiere ich meinen Code, um alle Spalten der "hit_data.tsv" -Datei zu lesen?

Der Code in seinem aktuellen Zustand ist unten:

files <- list.files(path = "C:/Users/Reginald/Desktop/JUNETEST/",pattern = "tar.gz") 
VOA<-length(files) 

for (i in files){ 
    eval(parse(text = paste0("untar(\"C:/Users/Reginald/Desktop/JUNETEST/",i,"\",files=\"hit_data.tsv\")",sep=""))) 
    VOA[i] <- read_tsv("~/hit_data.tsv") 
    #VOA[i]<- as.data.frame(VOA[i]) 
    #colnames(VOA[i])<-Headers[1,] 
VOA.df <-do.call(rbind,VOA[i]) 

} 

Antwort

0

Ich denke, man read_tsv in readr Paket verwenden.

Wenn dies der Fall ist, können Sie die folgenden Codes in der for-Schleife versuchen

read_tsv('~/hit_data.tsv', col_names=Headers) 

Es ist auch eine gute Praxis help() zu verwenden oder das Paket Dokument (readr.pdf) lesen Sie die Funktion, die Sie zu verstehen verwenden.

+0

Danke kitman0804 für den Rat aber col_names nimmt nur TRUE und FALSE nicht andere Objekte nach dem Fehler, den ich erhielt. Ich habe versucht, Spaltennamen = FALSE immer noch keine Lösung. – Reric

+0

Danke, dass du das Problem gelöst hast! – Reric

+0

oops Ich lese immer noch nur in einer Spalte, aber zumindest bekomme ich keinen Fehler für den Header. Ich werde die Dokumentation mehr lesen, um zu sehen, was falsch ist – Reric

Verwandte Themen