R 数据文件之间的主要区别是什么?

What are the main differences between R data files?

提问人:Carlos Cinelli 提问时间:1/27/2014 最后编辑:MusCarlos Cinelli 更新时间:5/20/2021 访问量:151538

问:

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

  • 压缩等方面有区别吗?
  • 何时应使用每种类型?
  • 如何将一种类型转换为另一种类型?
R R-FAQ Rdata RDA

评论


答:

230赞 KenM 1/27/2014 #1

Rda 只是 RData 的简称。你可以像使用 RData 一样保存()、load()、attach() 等。

Rds 存储单个 R 对象。然而,除了这个简单的解释之外,与“标准”存储有几个不同之处。可能这个 R-manual 链接到 readRDS() 函数充分阐明了这种区别。

因此,回答您的问题:

  • 区别不在于压缩,而在于序列化(请参阅此页面)
  • 例如,如手册页所示,您可能希望使用它来恢复具有不同名称的某个对象。
  • 您可以有选择地读取RDS()和save(),或者load()和saveRDS()。
182赞 Ricardo Saporta 1/27/2014 #2

除了 @KenM 的回答之外,另一个重要的区别是,在加载保存的对象时,您可以分配文件的内容。并非如此RdsRda

> 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

评论

5赞 Gregor Thomas 11/20/2018
@HarlanNelson试过了。完全符合我的期望。你的观点是什么?