R 语言读取 rda 文件时,magic number 'RDX3' 报错
当我们需要储存 R 语言的数据文件时,通常会使用 save() 函数储存为 .rda 文件的格式,然后读取时再使用 load() 函数进行读取。通常情况下,这样做是完全不会有问题的,但最近遇到了一个之前未曾遇到过的很诡异的错误:Error: bad restore file magic number (file may be corrupted) -- no data loadedIn ad...
当我们需要储存 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 | |
---|---|
version | the 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")
参考网址
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)