You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R调用readRDS报错bad restore file magic number问题咨询

报错触发原因
  • 函数调用不匹配:报错日志显示实际调用了load()函数读取RDS文件,load()是专门用于读取.RData/.Rda格式多对象存储文件的函数,saveRDS()生成的单对象RDS文件只能用readRDS()读取,两者序列化格式的魔术校验码不匹配,直接触发magic number错误。
  • 存储版本不兼容:R 4.0及以上版本默认序列化格式版本为3,警告信息显示保存文件时使用了低于2的弃用版本,低版本格式的魔术号不符合当前R版本的校验规则,也会触发该报错。
  • 文件损坏:保存RDS过程中出现程序中断、磁盘空间不足、跨设备传输时使用ASCII模式而非二进制模式,都会导致文件结构损坏,读取时无法识别魔术号。
解决方案
  • 修正读取函数:确认使用readRDS()读取RDS文件,不要混用load(),推荐使用file.path自动适配不同操作系统的路径分隔符,避免手动拼接错误,正确读取代码示例:
    res <- readRDS(file.path(dataPath, "result.rds"))
    
  • 保存时指定兼容的版本号:重新保存文件时明确指定序列化版本为2或3,避免使用已弃用的低版本,保存代码示例:
    # 若需要兼容R 3.5以下版本,可将version参数改为2
    saveRDS(res, file = file.path(dataPath, "result.rds"), version = 3)
    
  • 重新生成文件:如果原RDS文件已损坏,重新运行生成res对象的代码,完成保存后先执行一次本地读取测试,确认文件可用。
  • 跨设备传输RDS文件时,使用二进制传输模式,避免文件结构被破坏。

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:06:02