如何在R中加载sample.RData文件?magic number报错如何解决
R加载旧格式.RData文件报错解决方案
Error in load("sample.RData") : bad restore file magic number (file may be corrupted) -- no data loaded In addition: Warning message: file ‘sample.RData’ has magic number 'RDX3' Use of save versions prior to 2 is deprecated
该报错核心原因是当前使用的R版本不兼容:你要加载的sample.RData是R 2.0.0之前的版本生成的旧格式存储文件,新版R已经废弃了对早于version 2的save格式的支持。可按以下优先级尝试解决方案:
前置排查
首先确认文件是否为误改名的RDS格式文件,尝试执行读取命令:
readRDS("sample.RData")
如果命令执行成功,说明是RDS文件被错误修改后缀为RData,读取后重新用save()存储为标准RData格式即可。
方案1:旧版R中转(兼容性最佳)
- 下载安装R 1.9.x系列版本,该版本原生支持RDX3格式的RData文件
- 打开R 1.9.x,执行读取命令:
load("sample.RData") - 读取成功后重新保存为兼容新版R的格式:
save(list = ls(all = TRUE), file = "sample_new.RData", version = 2)
- 回到当前使用的新版R中,直接读取新生成的文件即可:
load("sample_new.RData")
方案2:Python pyreadr库中转(无需安装旧版R)
- 安装pyreadr依赖:
pip install pyreadr - 执行Python代码读取文件并导出为通用csv格式:
import pyreadr # 读取RData文件 result = pyreadr.read_r("sample.RData") # 打印所有读取到的对象名称 print(result.keys()) # 替换为你需要导出的对象名,导出为csv df = result["替换为实际对象名"] df.to_csv("sample_export.csv", index = False, encoding = "utf-8")
- 回到R中读取导出的csv文件即可:
read.csv("sample_export.csv")
注意事项
- 操作前务必先备份原始
sample.RData文件,避免误操作覆盖损坏原始数据 - 不要尝试直接用
save()替代load()读取文件,save()为数据写入函数,无法实现读取功能,操作不当还会直接覆盖原始文件 - 所有方案都执行失败的情况下,可判定原始文件本身已损坏,无法恢复
内容的提问来源于stack exchange,提问作者Khan
相关产品推荐
相关产品推荐

