# I/O for R's binary format

# Rds and RData (Rda) files

.rds and .Rdata (also known as .rda) files can be used to store R objects in a format native to R. There are multiple advantages of saving this way when contrasted with non-native storage approaches, e.g. write.table:

  • It is faster to restore the data to R
  • It keeps R specific information encoded in the data (e.g., attributes, variable types, etc).

saveRDS/readRDS only handle a single R object. However, they are more flexible than the multi-object storage approach in that the object name of the restored object need not be the same as the object name when the object was stored.

Using an .rds file, for example, saving the iris dataset we would use:

saveRDS(object = iris, file = "my_data_frame.rds")

To load it data back in:

iris2 <- readRDS(file = "my_data_frame.rds")

To save a multiple objects we can use save() and output as .Rdata.

Example, to save 2 dataframes: iris and cars

save(iris, cars, file = "myIrisAndCarsData.Rdata")

To load:

load("myIrisAndCarsData.Rdata")

# Enviromments

The functions save and load allow us to specify the environment where the object will be hosted:

save(iris, cars, file = "myIrisAndCarsData.Rdata", envir = foo  <- new.env())
load("myIrisAndCarsData.Rdata", envir = foo)
foo$cars

save(iris, cars, file = "myIrisAndCarsData.Rdata", envir = foo  <- new.env())
load("myIrisAndCarsData.Rdata", envir = foo)
foo$cars