報錯信息:
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發(fā)現(xiàn)報錯逃片,無法出圖
###前面省略
##### gsea富集 ####
KEGG_kk <- gseKEGG(geneList = geneList,
organism = organism, #人hsa 鼠mmu
pvalueCutoff = 0.25) #實際為padj閾值可調(diào)整
KEGG_kk <- DOSE::setReadable(KEGG_kk,
OrgDb=OrgDb,
keyType='ENTREZID')#轉(zhuǎn)化id
ridgeplot(KEGG_kk,
showCategory = 30,
fill = "p.adjust",
core_enrichment = T,
label_format = 30,
orderBy = "NES",
decreasing = F)
信息查找與報錯排查
然而傻唾,這個解答對于我的問題并沒有什么用未荒。。接箫。我運行dotplot或者其他函數(shù)都沒有任何問題攒读,唯獨使用ridgeplot會報錯,嘗試將閾值調(diào)0.99也解決不了問題列牺,還是自己一步步摸索吧整陌。。瞎领。
一個個參數(shù)進行調(diào)整泌辫,發(fā)現(xiàn)當 core_enrichment = F 時,竟然可以出圖了:
于是去解了一下參數(shù) core_enrichment 的含義:whether only using core_enriched genes九默,既然使用core_enrichment會報錯震放,那必然錯誤是出在了數(shù)據(jù)的core_enrichment這一信息上。再結(jié)合ridgeplot圖含義:展示富集通路的核心富集基因的表達分布驼修,x軸為富集通路的核心富集基因表達變化的log2倍殿遂。
猜想:函數(shù)識別不了核心富集基因,于是無法畫圖——難道是核心富集基因有缺失值或轉(zhuǎn)換id后無法被識別乙各?
最終解決辦法
需要使用未經(jīng)id轉(zhuǎn)化(基因ID為entrez)的gseaResult進行ridgeplot畫圖墨礁,修改后代碼如下:
###前面省略
##### gsea富集 ####
KEGG_kk_entrez <- gseKEGG(geneList = geneList,
organism = organism, #人hsa 鼠mmu
pvalueCutoff = 0.25) #實際為padj閾值可調(diào)整
KEGG_kk <- DOSE::setReadable(KEGG_kk,
OrgDb=OrgDb,
keyType='ENTREZID')#轉(zhuǎn)化id
ridgeplot(KEGG_kk_entrez,
showCategory = 30,
fill = "p.adjust",
core_enrichment = T,
label_format = 30,
orderBy = "NES",
decreasing = F)
成功解決問題: