Formats de données R: RData, Rda, Rds etc.

226

Quelles sont les principales différences entre les fichiers .RData, .Rda et .Rds?

Plus précisement:

  • Existe-t-il des différences de compression, etc.?
  • Quand faut-il utiliser chaque type?
  • Comment convertir un type en un autre?
Carlos Cinelli
la source

Réponses:

189

Rda est juste un nom court pour RData. Vous pouvez simplement enregistrer (), charger (), attacher (), etc. comme vous le faites avec RData.

Rds stocke un seul objet R. Pourtant, au-delà de cette simple explication, il existe plusieurs différences par rapport à un stockage "standard". Cette fonction R-manual Link to readRDS () clarifie probablement suffisamment ces distinctions.

Donc, répondant à vos questions:

  • La différence ne concerne pas la compression, mais la sérialisation (voir cette page )
  • Comme indiqué dans la page de manuel, vous pouvez vouloir l'utiliser pour restaurer un certain objet avec un nom différent, par exemple.
  • Vous pouvez lire RDS () et enregistrer (), ou charger () et enregistrer RDS () de manière sélective.
KenM
la source
151

En plus de la réponse de @ KenM, une autre distinction importante est que, lors du chargement dans un objet enregistré, vous pouvez affecter le contenu d'un Rdsfichier. Pas pourRda

> x <- 1:5
> save(x, file="x.Rda")
> saveRDS(x, file="x.Rds")
> rm(x)

## ASSIGN USING readRDS
> new_x1 <- readRDS("x.Rds")
> new_x1
[1] 1 2 3 4 5

## 'ASSIGN' USING load -- note the result
> new_x2 <- load("x.Rda")
loading in to  <environment: R_GlobalEnv> 
> new_x2
[1] "x"
# NOTE: `load()` simply returns the name of the objects loaded. Not the values. 
> x
[1] 1 2 3 4 5
Ricardo Saporta
la source
Essayez: x <- 1: 5 print (x) save (x, file = "x.Rda") rm (x) print (x) load ("x.Rda") print (x)
Harlan Nelson
4
@HarlanNelson l'a essayé. J'ai fait exactement ce que j'attendais. À quoi veux-tu en venir?
Gregor Thomas