So cheè not the preferred way per creare una tabella di frequenza come data.table
. Ma supponiamo di avere un table
, per qualsiasi motivo, che voglio convertire in un data.table
. La conversione data.table
non funziona allo stesso modo la conversione data.frame
fa:data.table della tabella è molto diversa da data.frame della tabella
require(data.table)
tab <- table(1:101)
DF.tab <- data.frame(tab)
DT.tab <- data.table(tab)
data.frame
converte i dati in un table
data.frame
, mentre data.table
tentativi per memorizzare il table
oggetto originale come colonna. (Ho provato questo con tab <- table(1:n)
per più valori di n
, tra gli altri esempi.)
> 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>
Si noti inoltre che mentre as.data.frame
funziona allo stesso modo come data.frame
, as.data.table
fallisce del tutto:
> 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 quello che sembra essere un problema molto strettamente correlato, se il tavolo è sufficientemente grande (test informale suggerisce .Dim > 100
), ottengo errori molto strani quando provo a 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]
noti che print(data.table(table(1:100)))
non ha un errore, ma visualizza solo una colonna V1
, mentre print(data.frame(table(1:100)))
ha Var1
e Freq
colonne.
Esiste una soluzione migliore di data.table(data.frame(...))
? Sto meglio cercando sempre di evitare lo table
interamente? Ed è l'errore print
causato direttamente da questo, o è qualcosa di più profondo?
Sembra essere un problema con inting (come 'data.table' stampa le prime 5 e 5 righe in basso quando le righe totali sono> 100) ... – Arun
Penso che il problema risieda nel modo in cui' R'makes le tabelle di frequenza come una matrice in cui ogni variabile univoca diventa è propria dimensione, e quella variabile unica è memorizzata come un 'nome'. –
è necessario inviare una richiesta di funzionalità e una segnalazione di bug – eddi