Leistung einzigartig in Basis vs data.table

stimmen
1

Ich habe eine ziemlich große Datensatz (4.7M Reihen und 42 Variablen). Ich arbeite an mit , wenn ich versuche , dies zu dem gemeinsamen genutzten Laufwerk zu speichern saveRDSWindows - löst eine Fehlermeldung, aber kleinere Datensätze speichern , ohne Frage. So reagieren Sie entschied ich mich zu diesem Thema zu meinen Daten zu normalisieren und die entsprechende Dimension und Faktendaten zu speichern.

Nach dem Extrahieren wurde die Säulen definieren , eine Dimension der Daten meines nächster Schritt Duplizierung in der Dimension mit zu entfernen unique, aber der Ausführung

dim_data <- unique(dim_data)

verursacht meine Sitzung für eine recht lange Zeit zu hängen, bevor mit der Fehlermeldung zurückkehr

Fehler: Speicher erschöpft (Limit erreicht?)

Fehler bei der Nachbearbeitung: nicht Vektor der Größe 127,6 Mb zuteilen

(Meine Maschine hat 16 GB RAM).

Ich rang mit diesem für eine Weile, bevor Sie versuchen

dim_data <- as.data.table(dim_data)
dim_data <- unique(dim_data)

An welchem ​​Punkt die zweite Zeile sofort und erfolgreich ausgeführt.

Ich bin glücklich , eine Lösung zu haben, und ich verstehe , dass eine andere Version uniquegenannt wird abhängig von der Klasse des Arguments , aber was für die Unfähigkeit Konten der uniquesogar seine Berechnung abgeschlossen , wenn auf Datenrahmen angewandt , die eine bestimmte Größe überschreiten? Ist die Basisimplementierung extrem ineffizient, und wenn dies der Fall ist dies bekannt und geplant für eine Korrektur (ich nichts über die Leistung finden könnte unique)? Umgekehrt ist es weniger um die data.table Implementierung der Funktion und mehr über data.table Objekte werden intelligenter hinter den Kulissen gespeichert?

Veröffentlicht am 07/11/2018 um 23:43
quelle vom benutzer
In anderen Sprachen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more