Ich weiß, dass table
not the preferred way ist, um eine Häufigkeitstabelle als data.table
zu machen. Aber angenommen, ich habe eine table
, aus welchem Grund auch immer, die ich in eine data.table
konvertieren möchte. Die data.table
Umwandlung nicht funktioniert auf die gleiche Weise die Umwandlung data.frame
tut:data.table der Tabelle ist sehr unterschiedlich zu data.frame der Tabelle
require(data.table)
tab <- table(1:101)
DF.tab <- data.frame(tab)
DT.tab <- data.table(tab)
data.frame
wandelt die Daten in ein table
data.frame
, während data.table
Versuche, das ursprüngliche Objekt table
als Spalte zu speichern. (Ich habe dies für mehrere Werte von n
mit tab <- table(1:n)
getestet, unter anderen Beispielen.)
> str(DF.tab)
'data.frame': 101 obs. of 2 variables:
$ Var1: Factor w/ 101 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
$ Freq: int 1 1 1 1 1 1 1 1 1 1 ...
> str(DT.tab)
Classes ‘data.table’ and 'data.frame': 101 obs. of 1 variable:
$ tab: 'table' int [1:101(1d)] 1 1 1 1 1 1 1 1 1 1 ...
..- attr(*, "dimnames")=List of 1
.. ..$ : chr "1" "2" "3" "4" ...
- attr(*, ".internal.selfref")=<externalptr>
Beachten Sie auch, dass, während as.data.frame
die gleiche Art und Weise wie data.frame
arbeitet, as.data.table
nicht ganz:
> as.data.table(tab)
Error in UseMethod("as.data.table") :
no applicable method for 'as.data.table' applied to an object of class "table"
In Was scheint ein sehr eng verwandtes Problem zu sein, wenn die Tabelle ausreichend groß ist (informelle Tests schlägt .Dim > 100
vor), bekomme ich sehr seltsame Fehler beim Versuch, print
:
> print(data.table(table(1:101)))
Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, :
dims [product 5] do not match the length of object [10]
Beachten Sie, dass print(data.table(table(1:100)))
keinen Fehler haben, zeigt aber nur eine Spalte V1
, während print(data.frame(table(1:100)))
Var1
und Freq
Spalten.
Gibt es eine bessere Problemumgehung als data.table(data.frame(...))
? Bin ich besser dran immer zu versuchen, table
vollständig zu vermeiden? Und wird der print
Fehler direkt dadurch verursacht, oder ist es etwas tiefer?
Es scheint ein Problem mit hübschen pr zu sein inting (wie 'data.table' die obersten 5 und unteren 5 Zeilen ausgibt, wenn die Gesamtzeilen> 100 sind) ... – Arun
Ich denke, das Problem liegt in der Art und Weise, wie' R' Frequenztabellen als Array aufbaut, wo jede einzelne Variable ankommt Es ist eine eigene Dimension und diese eindeutige Variable wird als 'Name' gespeichert. –
sollten Sie eine Feature-Anfrage und einen Fehlerbericht senden – eddi