R运行fgsea代码提示object 'Entrez' not found报错排查
fgsea运行报错
object 'Entrez' not found解决方案 这个报错和缺少Bioconductor相关R包无关,核心原因是filter()函数执行时,无法在输入的shrinkLvV数据框中找到名为Entrez的列。
常见诱因
- 加载的
Annotated_Results_LvV.RData为自行生成的非课程原始文件,前期基因注释环节没有向shrinkLvV对象中写入Entrez基因ID对应的列 - 列名拼写/大小写不匹配:实际存储Entrez ID的列名可能为
entrez、EntrezID、entrezgene_id等,和代码中写的Entrez不一致 - 未显式加载
dplyr包,导致调用了基础包中功能完全不同的stats::filter()函数,触发参数识别错误
修复步骤
- 第一步:运行命令查看
shrinkLvV的实际列名,定位存储Entrez基因ID的列
# 先加载dplyr避免filter函数冲突 library(dplyr) load("Robjects/Annotated_Results_LvV.RData") # 打印所有列名 colnames(shrinkLvV)
- 第二步:将原代码中所有引用
Entrez的位置,替换为上一步查到的实际列名。例如实际列名为entrez_id时,修改后的运行代码为:
library(fgsea) library(dplyr) load("Robjects/Annotated_Results_LvV.RData") gseaDat <- filter(shrinkLvV, !is.na(entrez_id)) ranks <- gseaDat$logFC names(ranks) <- gseaDat$entrez_id head(ranks)
- 第三步:如果列名列表中完全没有对应Entrez ID的列,需要先完成差异基因的ID注释转换,补充Entrez ID列后再运行fgsea流程。
内容的提问来源于stack exchange,提问作者C. van Veen
相关产品推荐
相关产品推荐

