R 语言读取 rda 文件时,magic number 'RDX3' 报错

23 篇文章 4 订阅
6 篇文章 0 订阅

当我们需要储存 R 语言的数据文件时,通常会使用 save() 函数储存为 .rda 文件的格式,然后读取时再使用 load() 函数进行读取。

通常情况下,这样做是完全不会有问题的,但最近遇到了一个之前未曾遇到过的很诡异的错误:

Error: bad restore file magic number (file may be corrupted) -- no data loaded
In addition: Warning message:
file ‘...’ has magic number 'RDX3'
   Use of save versions prior to 2 is deprecated 

于是查找了大量的资料最终定位问题。


解决方案

1. 储存时添加参数

其实问题非常简单,使用 save() 函数储存 .rda 文件时,使用的 R 版本是大于等于 3.5.0 版本的,而读取文件所使用的 R 版本是小于 3.5.0 ,此时就会出现这样的情况。

解决方法一个是,在高版本的 R 下储存数据时,添加参数 version =,指定读取时的 R 版本信息。

save() 参数说明:

Arguments
versionthe workspace format version to use. NULL specifies the current default format (3). Version 1 was the default from R 0.99.0 to R 1.3.1 and version 2 from R 1.4.0 to 3.5.0. Version 3 is supported from R 3.5.0.

如果 .rda 已经储存了出来,此时需要更新读取文件所使用的 R 版本,更新到 3.5.0 以上的版本即可。

2. 更新使用 load() 函数读取端的 R 版本

一些其它的情况

如果针对不是 .rda 文件出现类似的错误,则请不要使用 load() 函数进行读取,而应该使用 source(),或 readRDS() 进行读取,如下所示。

source("myfile.ext")
my.data <- readRDS("myfile.ext")

参考网址

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值