Comment enregistrer un data.frame dans R?

137

J'ai fait un data.frame en R qui n'est pas très gros, mais cela prend un certain temps à construire. Je voudrais l'enregistrer en tant que fichier, que je peux ensuite ouvrir à nouveau dans R?

Borut Flis
la source

Réponses:

176

Il existe plusieurs manières. Une façon consiste à utiliser save()pour enregistrer l'objet exact. par exemple pour la trame de données foo:

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

Puis chargez-le avec:

load("data.Rda")

Vous pouvez également utiliser write.table()ou quelque chose comme ça pour enregistrer la table en texte brut, ou dput()pour obtenir du code R pour reproduire la table.

Sacha Epskamp
la source
2
Il y a aussi dumpet les fichiers créés seraient source()-ed, bien que la help(dump)page indique que savec'est "plus sûr".
IRTFM
4
Je préfère toujours stocker les données en texte brut, donc je préfère dump()plus save()et write.table()plusdump()
Sacha Epskamp
Ai-je raison de dire que write.table ne conservera pas des choses comme avoir mis en place une colonne de 0 et de 1 comme facteur, mais que save()/ load()va? Si c'est le cas, c'est quelque chose à prendre en compte également. J'ai généralement une section de traitement de certains fichiers .csv et une fois que je les ai reçus là où je les aime, je préfère les enregistrer pour ne pas avoir à réexécuter ce code à chaque fois que je revisite mon projet. Donc, il est important de considérer la préservation de ce travail / ajustements de la structure.
Hendy
4
Oui. dump()enregistre également la structure. Ce write.tablequi est bien, c'est qu'il écrit des tables d'une manière que de nombreux logiciels peuvent importer.
Sacha Epskamp
2
Cela économise bien plus que le dataframe. Voir saveRDSpour enregistrer un dataframe sans son nom (dhendrickson a une réponse à ce sujet).
PatrickT
91

Si vous n'enregistrez qu'un seul objet (votre bloc de données), vous pouvez également utiliser saveRDS.
Sauver:

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

Alors lisez-le avec:

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

La différence entre saveRDSet saveest que dans l'ancien, un seul objet peut être enregistré et le nom de l'objet n'est pas forcé d'être le même après son chargement.

Dhendrickson
la source
1

Supposons que vous ayez un bloc de données que vous avez créé et nommé "Data_output", vous pouvez simplement l'exporter dans le même répertoire en utilisant la syntaxe suivante.

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

crédit à Peter et Ilja, UMCG, Pays-Bas

Nigus Asefa
la source