Jak zapisać ramkę data.frame w R?

137

Zrobiłem ramkę data.frame w R, która nie jest zbyt duża, ale jej zbudowanie zajmuje trochę czasu. Chciałbym zapisać go jako plik, który mogę potem ponownie otworzyć w R?

Borut Flis
źródło

Odpowiedzi:

176

Jest kilka sposobów. Jednym ze sposobów jest save()zapisanie dokładnego obiektu. np. dla ramki danych foo:

save(foo,file="data.Rda")

Następnie załaduj go za pomocą:

load("data.Rda")

Możesz także użyć write.table()lub czegoś podobnego, aby zapisać tabelę w postaci zwykłego tekstu lub dput()uzyskać kod R do odtworzenia tabeli.

Sacha Epskamp
źródło
2
Istnieje również dumpi utworzone pliki byłyby source()-ed, chociaż help(dump)strona mówi, że savejest „bezpieczniejsza”.
IRTFM
4
I zawsze wolą przechowywania danych w postaci zwykłego tekstu, więc wolałbym dump()nad save()i write.table()naddump()
Sacha Epskamp
Czy mam rację, że write.table nie zachowa takich rzeczy jak ustawienie kolumny zer i jedynek jako współczynnika, ale to save()/ load()będzie? Jeśli tak, to też warto wziąć to pod uwagę. Zwykle mam sekcję przetwarzania niektórych plików .csv i kiedy znajdę je tam, gdzie mi się podoba, wolę je zapisać, więc nie muszę ponownie uruchamiać tego kodu za każdym razem, gdy ponownie odwiedzam mój projekt. Dlatego ważne jest, aby wziąć pod uwagę zachowanie tej pracy / poprawek w strukturze.
Hendy,
4
Tak. dump()zapisuje również strukturę. Zaletą write.tablejest to, że zapisuje tabele w sposób, który wiele programów może importować.
Sacha Epskamp
2
Oszczędza to więcej niż tylko ramkę danych. Zobacz, saveRDSjak zapisać ramkę danych bez jej nazwy (dhendrickson ma na to odpowiedź).
PatrickT
91

Jeśli zapisujesz tylko jeden obiekt (ramkę danych), możesz również użyć saveRDS.
Zapisać:

saveRDS(foo, file="data.Rda")

Następnie przeczytaj go za pomocą:

bar <- readRDS(file="data.Rda")

Różnica między saveRDSi savepolega na tym, że w pierwszym przypadku można zapisać tylko jeden obiekt, a nazwa obiektu nie musi być taka sama po załadowaniu.

dhendrickson
źródło
1

Powiedzmy, że masz utworzoną przez siebie ramkę danych o nazwie „Data_output”. Możesz ją po prostu wyeksportować do tego samego katalogu, używając następującej składni.

write.csv (Data_output, "output.csv", row.names = F, quote = F)

kredyt dla Peter and Ilja, UMCG, Holandia

Nigus Asefa
źródło