2013-03-09 12 views
8

Qual è il formato migliore per mantenere semplici frame di dati su disco in R per la memorizzazione limitando la perdita semantica?Qual è il miglior formato in cui salvare i frame di dati su disco in R per la memorizzazione?

Chiedo perché sto archiviando un set di dati. In un mondo ideale, il mio formato di dati avrebbe le caratteristiche di seguire:

  1. Stabilità - il formato di archiviazione sarà compatibile con la versione futura di R
  2. compatibilità semantica - il formato di archiviazione capirà la semantica dei dati di primative di R tipi. Ad esempio, sarà in grado di memorizzare i fattori ordinati con etichette in modo ragionevole.
  3. standard Apri - idealmente, il formato sarà uno standard aperto in modo che altri pacchetti di statistiche (ora o in futuro) sarà in grado di capirlo

Il mio primo pensiero è stato quello di utilizzare CSV che è molto stabile, ma manca la ricchezza semantica richiesta. D'altra parte, il formato RData integrato di R cattura completamente la semantica di R, ma sembra probabile che cambi tra le versioni (correggimi se sbaglio).

Esiste un altro formato che trovi un equilibrio tra questi tre imperativi?

+0

I dati saranno aperti o manipolati da un altro programma rispetto a R? e '' save' menziona che 'Qualsiasi versione recente di R può leggere il file di salvataggio compresso', quindi dubito che il formato .Rdata possa cambiare tra le versioni. – agstudy

+1

Forse uso [XML] (http://stackoverflow.com/q/6256064/602276) o [JSON] (http://stackoverflow.com/q/3600431/602276) – Andrie

+1

Penso [YAML] (http://en.wikipedia.org/wiki/YAML) è una buona alternativa, si veda il pacchetto 'yaml'. Può gestire i tipi di dati di base di 'R' (* ad es. * Liste di nomi, vettori, ...) ed è leggibile da umani (in un modo migliore di XML a mio avviso). – QkuCeHBH

risposta

4

Scaricalo in un file di testo con dput. In questo modo si ottiene tutta la struttura degli oggetti di R, e la sua in un modulo basato sul testo che, se R si interrompe, può essere analizzato abbastanza facilmente.

Probabilmente non passa (3), il test "open standard".

R è abbastanza buono per la compatibilità con il suo formato .RData, quindi anche se i file scritti con l'ultima R non sono uguali a quelli più vecchi, l'ultima R leggerà comunque i vecchi file. Tuttavia, se R dovesse smettere di esistere, il reverse-engineering del formato binario è di ordini di grandezza più difficile di quello ottenuto dall'output di dput.