数据考察
✅ 单细胞数据探索:数据考察八步法(R 版)
适用于 data.frame
、matrix
、list
及 Seurat
/SingleCellExperiment
等对象。
① 检查对象的类型
判断数据属于哪种结构,有助于选择合适的操作方式。
class(a) # S3/S4 对象的类,最常用(如 "Seurat", "matrix", "data.frame")
typeof(a) # 底层类型,例如 list、double、character
mode(a) # 更传统但仍有用,numeric、logical、character 等
inherits(a, "Seurat") # 判断是否继承某种类
✅ 建议优先使用 class()
+ inherits()
组合判断对象类型。
② 查看结构
获取对象内部组织方式、嵌套结构等。
str(a) # 通用且简洁的结构预览
slotNames(a) # S4 对象(如 Seurat)的 slot 名
names(a) # 如果是 list 或 data.frame,返回字段名
length(a) # list 或 vector 的长度
🔍 str()
是查看任何复杂对象的首选,快速定位数据在哪一层。
③ 查看维度
了解数据矩阵的行列规模,对 scRNA-seq 尤其关键。
dim(a) # 二维数据的维度(nrow, ncol)
nrow(a); ncol(a) # 单独获取行列数
length(a) # 一维向量或 list 长度
📌 对于 Seurat 对象:
dim(a[["RNA"]]) # 查看 RNA assay 的原始数据矩阵维度
④ 内容概览
快速确认内容是否为预期、是否整洁。
head(a) # 查看前几行(默认6行)
tail(a, 3) # 查看最后3行
summary(a) # 每列的统计汇总(数值型为常用)
📌 对 Seurat:
head(a@meta.data) # 查看细胞元数据(细胞水平信息)
⑤ 缺失值 / 异常值检查
找出 NA、空字符串、Inf、极端值等问题。
sum(is.na(a)) # 总缺失值数量
colSums(is.na(a)) # 每列缺失值数量
any(is.infinite(a)) # 检查是否存在无穷值
📌 对 Seurat:
colSums(is.na(a@meta.data)) # 元数据中是否存在缺失
⑥ 分类变量的分布
频数统计可帮助发现 batch、celltype 不均衡问题。
table(a$celltype) # 变量频数表
prop.table(table(a$celltype)) # 百分比形式
📌 对 Seurat:
table(Idents(a)) # 当前默认身份(cluster 等)
table(a@meta.data$orig.ident) # 原始样本分布
⑦ 可视化初步检查
图像更容易发现离群点、批次效应、极端值。
hist(a$某变量, breaks = 30) # 直方图:数值分布
boxplot(a$某变量 ~ a$分组) # 分组下的数值分布
plot(a$X, a$Y) # 二维散点图
📌 对 Seurat 对象:
DimPlot(a, reduction = "umap", group.by = "celltype")
VlnPlot(a, features = "nCount_RNA", group.by = "celltype")
FeatureScatter(a, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")
⑧ 元信息 / 注释查看
关注 metadata 和 attributes 是分析“分组、批次”等高阶信息的入口。
attributes(a) # 获取对象的属性(类、names、dim 等)
metadata(a) # Seurat / SCE 对象的元信息
names(a@meta.data) # 查看元数据字段
colnames(a@assays$RNA@data) # 基因名
📌 对 Seurat,还可查看:
VariableFeatures(a) # 高变基因
Reductions(a) # 降维信息(umap, tsne 等)
Assays(a) # 存在哪些 assay
✅ 总结:单细胞数据考察八步法(图示版)
1️⃣ 类型确认 —— class(), inherits()
2️⃣ 结构预览 —— str(), names(), slotNames()
3️⃣ 维度信息 —— dim(), nrow(), ncol()
4️⃣ 内容概览 —— head(), summary()
5️⃣ 缺失异常检查 —— is.na(), is.infinite()
6️⃣ 分类变量分布 —— table(), prop.table()
7️⃣ 初步可视化 —— hist(), boxplot(), DimPlot()
8️⃣ 元信息查看 —— metadata(), attributes()