2013-03-09 14 views
8

Jaki jest najlepszy format do utrzymywania prostych ramek danych na dysku w R do przechowywania przy jednoczesnym ograniczeniu straty semantycznej?Jaki jest najlepszy format zapisywania ramek danych na dysku w R do przechowywania?

Pytam, ponieważ archiwizuję zestaw danych. W idealnym świecie, mój format danych miałby cechy następujące:

  1. stabilności - format przechowywania będzie kompatybilny z przyszłej wersji R
  2. semantyczna zgodność - format przechowywania zrozumie semantykę primative danych R za typy. Na przykład będzie w stanie przechowywać uporządkowane czynniki z etykietami w rozsądny sposób.
  3. Open Standard - idealnie, format będzie otwarty standard więc inne statystyki pakiety (teraz lub w przyszłości) będą mogli go

Moją pierwszą myślą było używać CSV, który jest bardzo stabilny zrozumieć, ale brakuje wymaganego semantycznego bogactwa. Z drugiej strony, wbudowany w R format RData całkowicie uchwycił semantykę R, ale wydaje się, że zmienia się pomiędzy wydaniami (popraw mnie jeśli się mylę).

Czy istnieje inny format, który wyważa te trzy imperatywy?

+0

Czy Twoje dane będą otwarte lub zmanipulowane przez inny program niż R? i '? save' wspominają, że' Każda ostatnia wersja R może odczytywać skompresowany plik zapisu', więc wątpię, aby format .Rdata mógł się zmieniać pomiędzy wydaniami. – agstudy

+1

Być może używaj [XML] (http://stackoverflow.com/q/6256064/602276) lub [JSON] (http://stackoverflow.com/q/3600431/602276) – Andrie

+1

Myślę, że [YAML] (http://en.wikipedia.org/wiki/YAML) to dobra alternatywa, zobacz pakiet 'yaml'. Może obsługiwać podstawowe typy danych "R" (* np. * Nazwane listy, wektory, ...) i jest czytelny dla człowieka (w lepszym sensie niż XML w mojej opinii). – QkuCeHBH

Odpowiedz

4

Zrzuć go do pliku tekstowego z dput. W ten sposób uzyskasz całą strukturę obiektów R, a jej w formie tekstowej, która, jeśli R przestanie istnieć, może być dość łatwo przetwarzana.

Prawdopodobnie nie przechodzi (3), twój test "otwartego standardu".

R jest całkiem niezły ze względu na kompatybilność wsteczną z jego formatem .RData, więc nawet jeśli pliki napisane przez najnowsze R nie są takie same jak starsze, najnowsze R nadal będzie czytać stare pliki. Jednakże, jeśli R powinno przestać istnieć, inżynieria odwrotna formatu binarnego jest o rząd wielkości trudniejsza niż grokowanie wyjścia z dput.

Powiązane problemy