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

Bioconductor Biobase构建ExpressionSet annotatedDataFrameFrom报错

ExpressionSet构建报错分析与修正方案

报错触发原因

  • 直接类匹配错误:annotatedDataFrameFrom函数仅支持接收矩阵、数据框类作为入参,当前抛出的signature "character"报错,本质是函数接收到的入参为字符类型,和预设的方法签名不匹配。常见触发场景包括:
    • 用read.csv()搭配sep="\t"读取制表符分隔文件时,分隔符识别错位,将整个文件读为单列字符向量,未生成预期的数据框结构
    • 操作过程中误将字符向量覆盖原本的数据框对象,传入函数时触发类校验失败
  • 方法选择偏差:annotatedDataFrameFrom是Biobase早期版本的辅助构造函数,类校验逻辑严格,对普通数据框的兼容性较差,容易无触发缘由地抛出方法匹配错误。
  • 维度匹配隐患:当前基因注释数据框共40223行,计数矩阵仅40220行,二者基因条目数量不一致,即使解决了类匹配报错,后续仍会触发维度不匹配错误。

调整步骤与修正代码

  • 替换读文件工具:读取制表符分隔的文本文件时,使用read.delim()替代read.csv(),从根源上避免分隔符参数失效导致的读入格式错误
  • 增加维度对齐逻辑:
    • 基因注释需完全匹配计数矩阵的行名顺序,剔除计数矩阵中不存在的多余基因条目
    • 样本属性需完全匹配计数矩阵的列名顺序,剔除计数矩阵中不存在的多余样本条目
  • 替换属性构造方法:使用Bioconductor原生推荐的AnnotatedDataFrame()构造器生成属性对象,替代兼容性较差的annotatedDataFrameFrom(),从根源上避免类签名匹配问题。

修正后的完整可运行代码如下:

# 读入计数矩阵,关闭自动列名修正避免样本名错位
exprs <- as.matrix(
  read.delim(
    "counts.txt",
    sep = "\t",
    header = TRUE,
    row.names = 1,
    check.names = FALSE
  )
)

# 读入并整理基因注释
features <- read.delim("features.txt", sep = "\t", check.names = FALSE)
rownames(features) <- features$ID
features$ID <- NULL
# 对齐基因和计数矩阵的行名,过滤多余基因
features <- features[rownames(exprs), ]

# 读入并整理样本属性
phenotypes <- read.delim("phenotypes.txt", sep = "\t", check.names = FALSE)
rownames(phenotypes) <- phenotypes$X1
phenotypes$X1 <- NULL
# 对齐样本和计数矩阵的列名,过滤多余样本
phenotypes <- phenotypes[colnames(exprs), ]

# 加载Biobase包
library(Biobase)

# 构造ExpressionSet对象
eset <- ExpressionSet(
  assayData = exprs,
  phenoData = AnnotatedDataFrame(phenotypes),
  featureData = AnnotatedDataFrame(features)
)

# 校验对象结构
eset

补充注意事项

  • 读文件时设置check.names = FALSE,避免R自动对列名中的特殊字符做转义修改,导致后续名称匹配失败
  • 维度对齐步骤是ExpressionSet构建的强制要求:assayData的行数必须和featureData的行数一致,assayData的列数必须和phenoData的行数一致,名称必须一一对应
  • 新版Biobase已逐步弱化annotatedDataFrameFrom方法的使用,直接传入数据框到AnnotatedDataFrame()是官方推荐的标准构造流程。

内容的提问来源于stack exchange,提问作者Pedram Azimzadeh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 21:27:10