Neben @ James Antwort, mit lapply
liest nur die Dateien in eine Liste, nicht in eine gemeinsame data.frame
. Von deiner Frage aus ist es nicht offensichtlich, wenn du das willst. Aber ich werde es trotzdem der Vollständigkeit halber hinzufügen.
Um identifizieren zu können, zu welcher Datei eine Zeile in der gemeinsamen data.frame
ursprünglich gehörte, füge ich oft eine Spalte mit dem Dateinamen hinzu. In Pseudo-Code würde dies in etwa so aussehen:
files = list.files()
data_list = lapply(files, function(f) {
dat = read.csv(fname, skip = 6)
dat$fname = fname
return(dat)
})
data_df = do.call("rbind", data_list)
Alternativ können Sie die ehrfürchtige plyr
Bibliothek verwenden, die genau die gleiche Sache tut in:
library(plyr)
files = list.files()
data_df = ldply(files, read.csv, skip = 6)
habe ich nicht diesen Pseudo-Code getestet , so könnte es sein, dass es noch ein paar Mängel gibt. Aber Sie bekommen die Grundidee. Ein Problem könnte beispielsweise sein, dass ldply
den Dateinamen nicht automatisch als Spalte hinzufügt. Dann müssen Sie den Funktionsaufruf wie ich mit lapply
verwenden. In diesem Fall speichert ldply
Sie den do.call
Schritt. Beachten Sie, dass plyr
einen Fortschrittsbalken (für lange Prozesse) und parallele Verarbeitung unterstützt.
Anmerkung:
- Ich mag kräftigere Namen als
j
und d
. Dies macht den Code leichter lesbar.
Von der Hilfeseite '' optionale Argumente zu FUN'. In Ihrem Beispiel 'read.csv' == FUN, so dass Sie einfach die zusätzlichen Argumente übergeben können, nachdem Sie FUN deklariert haben, also' lapply, j, read.csv, skip = 6) '. Siehe '? Lapply' für weitere Details. – Chase