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

如何在R中保存包含不同数据类型的嵌套列表

R 保存包含复杂对象的嵌套列表的可行方案

你需要保存的嵌套列表包含tidymodel(lm类)、tibble、ggplot这类R专属的S3类对象,优先选择R原生序列化方案,可100%保留对象属性,清理工作环境后只要存储文件保留就不会丢失数据,具体可选方案如下:

方案1:base R 原生.rda格式存储(无依赖、最通用)

不需要安装任何第三方包,支持批量存储多个R对象,所有属性完整保留:

  • 保存代码:save(你的嵌套列表变量名, file = "my_nested_list.rda")
  • 读取代码:load("my_nested_list.rda")

优势:兼容性最强,不会出现跨版本属性丢失问题,适合普通体积的列表存储。读取时会直接将原列表对象加载到当前工作环境,不需要额外赋值。

方案2:base R 原生.rds格式存储(更灵活)

专门用于存储单个R对象,读取时可自定义赋值的变量名,不会和当前环境的已有变量冲突:

  • 保存代码:saveRDS(你的嵌套列表变量名, file = "my_nested_list.rds")
  • 读取代码:new_list_name <- readRDS("my_nested_list.rds")

优势:无额外依赖,使用灵活,是单对象存储的首选方案。

方案3:qs 包高性能序列化(适合大体积列表)

如果你的嵌套列表体积较大(例如基于数十万行数据训练的模型、超大数据量的tibble),可以使用qs包实现更快的读写速度和更高的压缩率:

  • 首次使用先安装包:install.packages("qs")
  • 保存代码:qs::qsave(你的嵌套列表变量名, file = "my_nested_list.qs")
  • 读取代码:large_list <- qs::qread("my_nested_list.qs")

优势:读写速度比base R原生方案高2~10倍,压缩率提升30%以上,同样完整保留所有R对象的类属性。

避坑提示

  • 不要使用write.csv()、write_json()这类通用文本格式存储,这类格式无法识别R的自定义类属性,读取后模型、ggplot、tibble都会丢失原有功能无法正常使用。
  • 存储文件建议和你的R脚本放在同一目录,读取时使用相对路径即可,避免文件路径变动导致读取失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 17:57:00