.RData, .Rda和.Rds文件之间的主要区别是什么?

在压缩等方面有区别吗? 什么时候应该使用每种类型? 如何将一种类型转换为另一种类型?


当前回答

除了@KenM的回答之外,另一个重要的区别是,在加载保存的对象时,您可以分配Rds文件的内容。但Rda却不是这样

> 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

其他回答

Rda只是RData的简称。你可以保存(),加载(),附加()等,就像你做的RData。

Rds存储单个R对象。然而,除了这个简单的解释之外,还有几个不同于“标准”存储的地方。这个R-manual Link to readRDS()函数可能充分阐明了这些区别。

所以,回答你的问题:

区别不在于压缩,而在于序列化(参见本页) 例如,就像在手册页中显示的那样,您可能想使用它来恢复具有不同名称的特定对象。 你可以选择readRDS()和save(),或者load()和saveRDS()。

除了@KenM的回答之外,另一个重要的区别是,在加载保存的对象时,您可以分配Rds文件的内容。但Rda却不是这样

> 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