Ich habe 15 Millionen CSV-Dateien mit jeweils zwei Spalten (Integer und Float) und zwischen 5 und 500 Zeilen. Jede Datei sieht ungefähr so aus:
%Vor% Zur Zeit überspiele ich alle Dateien und verwende read.csv()
, um jede Datei in eine große Liste zu importieren. Hier ist eine vereinfachte Version:
Später in meinem Code gehe ich zurück durch jede Matrix in der Liste und berechne einige Metriken.
Nach dem Start dieses Imports scheint es etwa 3 bis 5 Tage in Anspruch zu nehmen. Gibt es einen schnelleren Weg, dies zu tun?
BEARBEITEN : Ich habe weitere Details zu meinem Code hinzugefügt.
Ich habe kein klares Ziel, aber wenn Sie versuchen, all diese Dateien in einer einzigen R-Datenstruktur zu lesen, dann sehe ich zwei Hauptprobleme:
Machen Sie also ein schnelles Profiling und sehen Sie, wie lange die Lesevorgänge dauern. Wenn sie langsamer werden, wenn Sie mehr Dateien einlesen, konzentrieren wir uns auf Problem Nr. 2. Wenn es ständig langsam ist, dann machen wir uns Sorgen um das Problem # 1.
In Bezug auf Lösungen würde ich sagen, dass Sie mit zwei Dingen beginnen könnten:
scan()
oder readlines()
verwenden. Fügen Sie weitere Details zu Ihrem Code hinzu (wie sieht die Liste aus, die Sie verwenden?) und wir können möglicherweise hilfreicher sein.
Wie wäre es mit diesem allgemeinen Arbeitsablauf? Nicht getestet, obwohl.
%Vor%Wie Jeff erwähnt hat, gibt es hier einige Dinge, die sehr lange dauern können. Das Problem könnte der Dateizugriff oder das Einlesen von Dateien sein oder der Speicher reicht nicht aus, wenn Sie 15 Millionen Datenrahmen im RAM haben. Um das Problem zu verschlimmern, könnte der Botbeneck abhängig von der Spezifikation Ihres Rechners variieren (z. B. verlangsamt eine langsame Festplatte das Lesen der Dateien, ein Mangel an RAM ist ein Problem mit einer hohen Dateianzahl). Um das Problem zu lösen, müssen Sie ein Profiling durchführen.
Try liest gerade mal 10000 oder so Dateien ein und ruft system.time
oder, besser gesagt, mit rbenchmark
auf, um zu sehen, was die meiste Zeit kostet.
Dann schau dir den Link von joran an
Schnelles Lesen sehr großer Tabellen als Datenrahmen in R
und sehen, ob etwas von der Technik dort hilft.