plot5 · 代码 1 · 图 1 · 笔记 1 · 代码库专题
R对象保存格式RData_RDS_qs2
代码库整理的专题,README 见原始目录。
R对象保存格式RData_RDS_qs2(自动生成占位图)
图源:(自动生成占位图)
分析代码
1 个源码文件,按目录顺序;本机绝对路径已替换为 ~。 代码可复制,但需要按自己的数据改路径与参数。
01_对象保存格式选择.r
# =============================================================
# R 单细胞对象保存格式选择:RData / RDS / qs2
# 来源:https://mp.weixin.qq.com/s/cWuCCcCfAaFcdbbmkpn_hQ
# 整理日期:2026-08-22
# 适用对象:Seurat、SingleCellExperiment、大矩阵、列表等
# 使用方式:把下方代码中的 sce.all / group / dat 替换为真实对象
# =============================================================
# 0. 安装 qs2(仅 .qs2 格式需要)
if (!requireNamespace("qs2", quietly = TRUE)) {
install.packages("qs2")
}
# 1. .RData / .rda:一个文件保存多个带名称对象
# 读取时 load() 会直接把对象放回当前环境,注意同名覆盖
save(sce.all, top5, mycolors, file = "sce_total.RData")
load("sce_total.RData")
# 2. .rds:保存单个对象,读取时返回变量,不会自动污染环境
saveRDS(sce.all, file = "sce.all.rds")
sce.all <- readRDS("sce.all.rds")
# 多个内容先整理成 list,再保存为一个 .rds
result <- list(sce = sce.all, group = group, dat = dat)
saveRDS(result, "analysis_result.rds")
result <- readRDS("analysis_result.rds")
sce.all <- result$sce
group <- result$group
dat <- result$dat
# 3. qs2:新格式,读写通常更快,但需要额外依赖
library(qs2)
qs_save(sce.all, "sce.all.qs2")
sce.all <- qs_read("sce.all.qs2")
# qs2 转回 RDS,方便发送给未安装 qs2 的环境
qs2::qs_to_rds(
input_file = "sce.all.qs2",
output_file = "sce.all.rds"
)
sce.all <- readRDS("sce.all.rds")
# 4. 简单基准测试:在真实单细胞对象上比较耗时和文件大小
benchmark_save_formats <- function(obj, tag = "sce", times = 1) {
library(qs2)
formats <- c("rdata" = ".RData", "rds" = ".rds", "qs2" = ".qs2")
result <- lapply(formats, function(ext) {
path <- paste0(tag, ext)
time <- system.time({
for (i in seq_len(times)) {
if (ext == ".RData") {
save(obj, file = path)
} else if (ext == ".rds") {
saveRDS(obj, file = path)
} else {
qs_save(obj, file = path)
}
}
})["elapsed"]
data.frame(
format = ext,
elapsed_sec = unname(time),
file_size_mb = file.info(path)$size / 1024^2,
stringsAsFactors = FALSE
)
})
do.call(rbind, result)
}
# 示例:benchmark_save_formats(seurat_obj, tag = "oral_sc", times = 1)