data.table der Tabelle unterscheidet sich sehr von data.frame der Tabelle

8

Ich weiß, dass table nicht der bevorzugte Weg ist, eine Häufigkeitstabelle als data.table zu erstellen. Aber angenommen, ich habe ein table , aus welchem ​​Grund auch immer, das ich in ein data.table konvertieren möchte. Die data.table Konvertierung funktioniert nicht auf die gleiche Weise wie die data.frame Konvertierung:

%Vor%

data.frame konvertiert die table -Daten in eine data.frame , während data.table versucht, das ursprüngliche table -Objekt als Spalte zu speichern. (Ich habe dies unter anderem mit tab <- table(1:n) für mehrere Werte von n getestet.)

%Vor%

Beachten Sie auch, dass as.data.frame genauso funktioniert wie data.frame , as.data.table jedoch vollständig:

%Vor%

Bei einem scheinbar sehr eng verwandten Problem, wenn die Tabelle ausreichend groß ist (informelles Testen schlägt .Dim > 100 vor), erhalte ich sehr seltsame Fehler, wenn ich versuche, print :

%Vor%

Beachten Sie, dass print(data.table(table(1:100))) keinen Fehler aufweist, sondern nur eine Spalte V1 anzeigt, während print(data.frame(table(1:100))) Spalten Var1 und Freq hat.

Gibt es eine bessere Problemumgehung als data.table(data.frame(...)) ? Ist es besser, immer table zu vermeiden? Und ist der print Fehler direkt von diesem verursacht, oder ist es etwas tiefer?

    
Frank 22.08.2013, 21:13
quelle

1 Antwort

6

Es gibt eine Funktion as.data.frame.table , die mit data.frame(tbl-object) aufgerufen wird. Es konvertiert das matrixartige Tabellenobjekt in ein langformatiges Datenobjekt. Es scheint noch keine as.data.table.table-Funktion zu geben, und es sollte wohl sein, und ich würde zustimmen, dass sie sich genauso verhalten sollte wie die as.data.frame-Methode, anstatt von der Matrix zu übernehmen (wie es die Tabelle wäre) normalerweise erben:

%Vor%

Ich denke, das sollte eine Feature-Anfrage sein und ich glaube nicht, dass es mit dem zweiten Problem zusammenhängt.

Ihre zweite Frage scheint wie ein Fehler zu sein. Die data.table Autoren am prominentesten @ MatthewDowle sind in der Regel sehr reaktionsschnell, und Sie sollten in Erwägung ziehen, einen Bericht einzureichen.

    
42- 22.08.2013, 21:44
quelle

Tags und Links