2014-07-02 15 views
6

Quando salvi un oggetto da R usando save(), cosa determina la dimensione del file salvato? Chiaramente non è la stessa (o vicina a) la dimensione dell'oggetto determinata da object.size().Cosa determina la dimensione di un oggetto salvato in R?

Esempio: Ho letto un frame di dati e salvati utilizzando

snpmat=read.table("Heart.txt.gz",header=T) 
save(snpmat,file="datamat.RData") 

La dimensione del file è datamat.RData 360MB.

> object.size(snpmat) 
4998850664 bytes  #Much larger 

Poi eseguite alcune analisi di regressione ed ottenuto un'altra trama di dati di adj.snpmat stesse dimensioni (6820000 righe e 80 colonne).

> object.size(adj.snpmat) 
4971567760 bytes  

ho salvarlo utilizzando

> save(adj.snpmat,file="adj.datamat.RData") 

Ora, la dimensione del file adj.datamat.RData è 3.3GB. Sono confuso perché i due file sono di dimensioni così diverse mentre object.size() fornisce dimensioni simili. Qualunque idea su cosa determina la dimensione dell'oggetto salvato è la benvenuta.

Qualche informazione in più:

> typeof(snpmat) 
[1] "list" 

> class(snpmat) 
[1] "data.frame" 

> typeof(snpmat[,1]) 
[1] "integer" 

> typeof(snpmat[,2]) 
[1] "double"   #This is true for all columns except column 1 

> typeof(adj.snpmat) 
[1] "list" 

> class(adj.snpmat) 
[1] "data.frame" 

> typeof(adj.snpmat[,1]) 
[1] "character" 

> typeof(adj.snpmat[,2]) 
[1] "double"   #This is true for all columns except column 1 
+1

Il file '.Rdata' salvato è compresso e dovrebbe quindi essere più piccolo. Quanto più piccolo dipenderà dall'algoritmo di compressione e dai tuoi dati. – Andrie

+0

Nel mio esempio, quale potrebbe essere la ragione? In altre parole, puoi dirmi quali aspetti dei dati influiscono su di esso? – Pratyay

+2

@Pratyay Che cosa sai della compressione? Sarebbe probabilmente utile leggere su di esso in quanto sostanzialmente ciò che stai chiedendo. http://en.wikipedia.org/wiki/Data_compression – Dason

risposta

0

vostri matrici sono molto diversi e quindi comprimere in modo molto diverso.

I dati SNP contengono solo alcuni valori (ad es. 1 o 0) ed anche molto sparsi. Ciò significa che è molto facile da comprimere. Ad esempio, se avessi una matrice di tutti gli zeri, potresti pensare di comprimere i dati specificando un singolo valore (0) e le dimensioni.

La matrice di regressione contiene molti tipi diversi di valori e sono anche numeri reali (sto assumendo valori p, coefficienti, ecc.) Ciò lo rende molto meno comprimibile.