直接看 rstudio里面的 rds 数据 无法看到 expr 表达矩阵的详细数据 ,有什么办法呢 - 实践

在RStudio里“看不见”expr表达矩阵的常见原因只有两类:

  1. 对象太大,RStudio的Viewer/Environment面板自动截断;
  2. 对象并不是真正的matrix/data.frame,而是嵌在List/S4对象里的slot或元素。
    只要先确认“它到底藏在哪”,再把它拆成真正的矩阵即可。下面给一套“三步排查+两种导出”做法,基本能搞定所有类似情况。

方法一

GSE32967_raw <- readRDS(“K:/download/geo/raw_data/GSE32967_raw.rds”)
expr <- GSE32967_raw$expr
View(expr)

方法2 转成csv


  1. 先搞清楚对象结构
# 把rds读进来
obj <- readRDS("your_file.rds")
# 看顶层类型
str(obj, max.level = 2, give.attr = FALSE)
# 如果是S4
showMethods(class = class(obj)) # 看有什么提取器
slotNames(obj) # 看slot名字
# 如果是普通list
names(obj)

90%的情况下expr矩阵要么叫expr、exprs、assay,要么藏在assays()、slot(obj,“assay”)、obj[[“expr”]]里。


  1. 把表达矩阵“抠”出来
    下面给出4句最常用提取模板,按对象类型直接套:

a) 纯list

expr <- obj$expr # 或 obj[["expr"]]

b) S4对象(ExpressionSet老对象)

library(Biobase)
expr <- Biobase::exprs(obj)

c) SummarizedExperiment / DESeqTransform

library(SummarizedExperiment)
expr <- assay(obj, 1) # 1可换成"counts","tpm"等名字

d) 自定义大列表,名字不确定

expr <- obj[[ which(sapply(obj, function(x) is.matrix(x) & nrow(x)>
5000)) ]]

  1. 确认拿到真正的数值矩阵
class(expr)
dim(expr)
summary(expr[1:5, 1:5])

只要class是matrix/data.frame,且dim出来行是基因、列是样本,就成功了。


  1. 依旧太大、RStudio依旧不显示?
    两种办法绕过Viewer限制:
  1. 直接head+View
View(head(expr, 1000)) # 只看前1000行
  1. 写成csv/txt外部打开
write.csv(expr, file = "expr_matrix.csv", quote = FALSE)
# 或者
data.table::fwrite(data.table::as.data.table(expr), "expr_matrix.tsv", sep = "\t")

写完用Excel/Notepad++/VSCode打开即可。


  1. 一条龙模板(复制即用)
library(SummarizedExperiment) # 提前装好
obj <- readRDS("xxx.rds")
expr <- if("SummarizedExperiment" %in% class(obj)){
assay(obj, 1)
} else if ("ExpressionSet" %in% class(obj)){
Biobase::exprs(obj)
} else if (is.list(obj) &&
"expr" %in% names(obj)){
obj$expr
} else {
stop("请手动str(obj)再决定怎么取")
}
dim(expr)
write.csv(expr, "expr_matrix.csv", quote = FALSE)

跑完去工作目录下拿csv即可,想怎么看就怎么看。

posted @ 2025-09-22 21:04  wzzkaifa  阅读(12)  评论(0)    收藏  举报