R sembra richiedere quattro byte di archiviazione per intero, anche per i più piccoli:risparmiare spazio di archiviazione per i piccoli numeri interi o fattori con alcuni livelli
> object.size(rep(1L, 10000))
40040 bytes
E, per di più, anche per fattori:
> object.size(factor(rep(1L, 10000)))
40456 bytes
Penso che, soprattutto in quest'ultimo caso, questo potrebbe essere gestito molto meglio. C'è una soluzione che mi aiuti a ridurre i requisiti di archiviazione per questo caso a otto o anche due bit per riga? Forse una soluzione che usa il tipo raw
internamente per la memorizzazione ma si comporta diversamente come un normale fattore. Il pacchetto bit
offre questo per bit, ma non ho trovato nulla di simile per i fattori.
mio frame di dati con pochi milioni di righe è consumando gigabyte, e questo è un enorme spreco di memoria e tempo di esecuzione (!). La compressione ridurrà lo spazio su disco richiesto, ma nuovamente a spese del tempo di esecuzione.
correlati: codifiche
- Why do logicals (booleans) in R require 4 bytes?
- How can I efficiently construct a very long factor with few levels?
I frame di dati non sono in grado di gestire dati di tale ampiezza. Hai bisogno di 'data.table'. –
@HongOoi: In che modo 'data.table' mi aiuterà a risolvere il problema? – krlmlr
@Arun: Supponiamo che per lo più si stia eseguendo il looping dei dati, in modo che 'data.table' non sia di grande aiuto. – krlmlr