ridgeplot报错:Error in ans[ypos] <
2022-05-22 本文已影响0人
嘿嘿嘿嘿哈
报错信息:
Error in ans[ypos] <- rep(yes, length.out = len)[ypos] :
replacement has length zero
In addition: Warning message:
In rep(yes, length.out = len) : 'x' is NULL so the result will be NULL
![]()
报错情况与代码
在进行GSEA时,使用ridgeplot可视化gseaResult发现报错,无法出图
###前面省略
##### gsea富集 ####
KEGG_kk <- gseKEGG(geneList = geneList,
organism = organism, #人hsa 鼠mmu
pvalueCutoff = 0.25) #实际为padj阈值可调整
KEGG_kk <- DOSE::setReadable(KEGG_kk,
OrgDb=OrgDb,
keyType='ENTREZID')#转化id
ridgeplot(KEGG_kk,
showCategory = 30,
fill = "p.adjust",
core_enrichment = T,
label_format = 30,
orderBy = "NES",
decreasing = F)
信息查找与报错排查
然而,这个解答对于我的问题并没有什么用。。。我运行dotplot或者其他函数都没有任何问题,唯独使用ridgeplot会报错,尝试将阈值调0.99也解决不了问题,还是自己一步步摸索吧。。。
一个个参数进行调整,发现当 core_enrichment = F 时,竟然可以出图了:
![](https://img.haomeiwen.com/i27322953/394805895d4463cf.png)
![](https://img.haomeiwen.com/i27322953/b7b8b6db76a8165b.png)
于是去解了一下参数 core_enrichment 的含义:whether only using core_enriched genes,既然使用core_enrichment会报错,那必然错误是出在了数据的core_enrichment这一信息上。再结合ridgeplot图含义:展示富集通路的核心富集基因的表达分布,x轴为富集通路的核心富集基因表达变化的log2倍。
猜想:函数识别不了核心富集基因,于是无法画图——难道是核心富集基因有缺失值或转换id后无法被识别?
最终解决办法
需要使用未经id转化(基因ID为entrez)的gseaResult进行ridgeplot画图,修改后代码如下:
###前面省略
##### gsea富集 ####
KEGG_kk_entrez <- gseKEGG(geneList = geneList,
organism = organism, #人hsa 鼠mmu
pvalueCutoff = 0.25) #实际为padj阈值可调整
KEGG_kk <- DOSE::setReadable(KEGG_kk,
OrgDb=OrgDb,
keyType='ENTREZID')#转化id
ridgeplot(KEGG_kk_entrez,
showCategory = 30,
fill = "p.adjust",
core_enrichment = T,
label_format = 30,
orderBy = "NES",
decreasing = F)
成功解决问题:
![](https://img.haomeiwen.com/i27322953/1c1745097a188dc3.png)