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

构建SingleCellExperiment对象时遇invalid rownames length错误求助

解决SingleCellExperiment构建时的"invalid rownames length"错误

错误核心原因

这个错误源于两个关键问题:

  • colData的行数与counts矩阵的列数不匹配:SingleCellExperiment要求colData的行数必须等于细胞样本数(即counts矩阵的列数)
  • 计数矩阵读取时未正确处理行名:默认read.csv会把基因名列当作普通数据列,导致维度逻辑混乱

分步解决方案

1. 正确读取计数矩阵

指定row.names=1,将计数文件的第一列(基因名)设为矩阵行名:

counts <- read.csv("kidneydata/kidney085_XY01_20-0038/count.csv", row.names = 1, stringsAsFactors = FALSE)

2. 调整计数矩阵维度

你提到counts是317个观测、14975个变量,说明当前是细胞×基因的矩阵(317行细胞,14975列基因),但SingleCellExperiment要求计数矩阵为基因×细胞格式,需要转置:

counts <- t(counts)

3. 验证colData维度一致性

确认colData的行数等于转置后counts的列数(即317个细胞):

# 强制检查维度匹配,不匹配则报错提示
stopifnot(nrow(colData) == ncol(counts))

如果不匹配,检查spa.csv是否存在空行/多余行,确保每行对应一个细胞的坐标数据。

4. 构建SingleCellExperiment对象

统一colData的行名与counts的列名(细胞ID),再构建对象:

rownames(colData) <- colnames(counts)

sce <- SingleCellExperiment(assays = list(counts = counts), colData = colData)

验证构建结果

运行以下代码确认对象正常:

# 查看sce基本信息
sce
# 检查colData与细胞列名的匹配性
all(rownames(colData) == colnames(sce))

内容的提问来源于stack exchange,提问作者HARI NAGA SAI KIRAN SURYADEVAR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:52:21