Wie speichere ich einen data.frame in R?

137

Ich habe in R einen data.frame erstellt, der nicht sehr groß ist, dessen Erstellung jedoch einige Zeit in Anspruch nimmt. Ich würde es als Datei speichern, die ich dann wieder in R öffnen kann?

Borut Flis
quelle

Antworten:

176

Es gibt verschiedene Möglichkeiten. Eine Möglichkeit besteht save()darin, das genaue Objekt zu speichern. zB für Datenrahmen foo:

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

Dann laden Sie es mit:

load("data.Rda")

Sie können auch write.table()oder so etwas verwenden, um die Tabelle im Klartext zu speichern oder dput()um R-Code zum Reproduzieren der Tabelle zu erhalten.

Sacha Epskamp
quelle
2
Es gibt auch dumpund erstellte Dateien würden source()-ed, obwohl die help(dump)Seite sagt, saveist "sicherer".
IRTFM
4
Ich ziehe es immer Daten im Klartext zu speichern, so dass ich lieber dump()über save()und write.table()überdump()
Sacha Epskamp
Stimmt es, dass write.table Dinge wie das Einrichten einer Spalte mit Nullen und Einsen als Faktor nicht beibehält, aber das save()/ load()wird? Wenn ja, ist dies ebenfalls zu berücksichtigen. Normalerweise verarbeite ich einige CSV-Dateien in einem Abschnitt. Sobald ich sie dort habe, wo ich sie mag, ziehe ich es vor, sie zu speichern, damit ich diesen Code nicht jedes Mal neu ausführen muss, wenn ich mein Projekt erneut besuche. Daher ist es wichtig, diese Arbeit / Änderungen an der Struktur beizubehalten.
Hendy
4
Ja. dump()speichert auch die Struktur. Das Schöne daran write.tableist, dass es Tabellen so schreibt, wie viele Software sie importieren können.
Sacha Epskamp
2
Dies spart mehr als nur den Datenrahmen. Siehe saveRDS, um einen Datenrahmen ohne Namen zu speichern (dhendrickson hat eine Antwort darauf).
PatrickT
91

Wenn Sie nur ein einzelnes Objekt (Ihren Datenrahmen) speichern, können Sie auch verwenden saveRDS.
Speichern:

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

Dann lesen Sie es mit:

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

Der Unterschied zwischen saveRDSund savebesteht darin, dass im ersteren nur ein Objekt gespeichert werden kann und der Name des Objekts nach dem Laden nicht mehr identisch sein muss.

Dhendrickson
quelle
1

Angenommen, Sie haben einen von Ihnen erstellten Datenrahmen mit dem Namen "Data_output". Sie können ihn einfach mithilfe der folgenden Syntax in dasselbe Verzeichnis exportieren.

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

Kredit an Peter und Ilja, UMCG, Niederlande

Nigus Asefa
quelle