2013-08-01 2 views
29

Anscheinend in meiner letzten Frage habe ich eine Verwechslung zwischen data.frame und data.table demonstriert. Zugegeben, ich wusste nicht, dass es einen Unterschied gab.Was ist der praktische Unterschied zwischen data.frame und data.table in R

Also lese ich die Hilfe für jeden, aber in praktischen, alltäglichen Begriffen, was ist der Unterschied, was sind die Implikationen und wofür werden sie verwendet, die mir helfen würden, sie zu benutzen?

+2

-1. Die Frage ist zu weit gefasst. –

+0

@AnandaMahto, danke, aber es ist auch eine Gelegenheit für ein Genie, eine umfassende und erfolgreiche Antwort zu finden ... :-) –

+12

@Justin: Die Links waren hilfreich. Ich war mir ihrer nicht bewusst. Vielleicht könntest du dich ohne die Einstellung informieren. @ Ferdinand.kraft: Dein zweiter Kommentar fasst meine Position genau zusammen. Natürlich kann ich die Hilfeseiten und Tutorials lesen, aber viele von ihnen übernehmen Kenntnisse der Sprache und lesen wie technische Handbücher für die Erfahrenen. Sicherlich gibt es jemanden unter uns, der die praktischsten Teile aus der Arbeit mit "data.frame" und "data.table" seit Jahren destillieren kann. Ich will Arbeit nicht meiden, was können die erfahrenen Programmierer mit weniger Erfahrung an uns weitergeben? – remarkableearth

Antwort

7

Sie sind ähnlich. Datenrahmen sind Listen von Vektoren gleicher Länge, während Datentabellen (data.table) eine Vererbung von Datenrahmen ist. Daher sind Datentabellen Datenrahmen, aber Datenrahmen sind nicht notwendigerweise Datentabellen. Das Datentabellen-Paket und die Funktion wurden geschrieben, um die Geschwindigkeit der Indizierung, der geordneten Joins, der Zuweisungs-, Gruppierungs- und Auflistungsspalten (usw.) zu erhöhen.

Weitere Informationen finden Sie unter http://datatable.r-forge.r-project.org/datatable-intro.pdf.

+2

Sie sind nur im Aussehen ähnlich. –

+0

@Ellis, danke für den Link. – remarkableearth

+0

@ Ferdinand.kraft sie sind nicht _similar_ in Funktion? ;) Aber ich stimme zu, dass sie viele Unterschiede haben –

47

Während dies eine breite Frage ist, wenn jemand neu zu R ist, kann dies verwirrend sein und die Unterscheidung kann verloren gehen.

Alle data.table s sind auch data.frame s. Sie können sich data.tables als data.frames mit zusätzlichen Funktionen vorstellen.

data.frame ist Teil der Basis R.

data.table ist ein Paket, das data.frames erweitert. Zwei seiner bemerkenswertesten Merkmale sind Geschwindigkeit und sauberer Syntax.

Diese Syntax Zucker ist jedoch anders als die Standard-R-Syntax für data.frame, während es für das ungeschulte Auge schwierig ist, auf einen Blick zu unterscheiden. Wenn Sie also ein Code-Snippet lesen und kein anderer Kontext darauf hinweist, dass Sie mit data.tables arbeiten und versuchen, den Code auf einen data.frame anzuwenden, kann dies fehlschlagen oder zu unerwarteten Ergebnissen führen. (Eine klare Werbegeschenk, das Sie mit D. T des arbeiten neben dem library/require Aufruf ist die Anwesenheit des Zuweisungsoperators := die einzigartig ist zu dt)

Mit allem, was gesagt wird, ich denke es ist schwer zu schätzen tatsächlich die Schönheit von data.table, ohne die Unzulänglichkeiten von data.frame zu erfahren. (Siehe zum Beispiel die ersten drei Aufzählungspunkte von @ eddis Antwort). Mit anderen Worten, ich würde sehr empfehlen, zuerst zu lernen, wie man mit data.frames arbeitet und manipuliert, dann weiter zu data.table s.

26

Einige Unterschiede in meinem Alltag zu Tag, der in dem Sinne kommen (in keiner bestimmten Reihenfolge):

  • mit nicht data.table Namen immer und immer angeben (zu plump Syntax und dummen Fehlern führen) in Ausdrücke (auf der Kehrseite vermisst ich manchmal die TAB-Vervollständigung von Namen)
  • viel schneller und sehr intuitiv by Operationen
  • mehr und nicht hektisch Ctrl-C schlägt nach df eingeben, zu vergessen, wie groß df war (auch fast was zu noch nie mit head)
  • schneller und besser Datei mit fread Lese
  • das Paket auch eine Reihe von anderen Utility-Funktionen bietet, wie %between% oder rbindlist das Leben sonst besser
  • schneller alles machen, da viele data.frame Operationen kopieren die ganze Sache unnötig
+0

upvoted für den dritten Grund ... – eflores89

Verwandte Themen