今天在使用CMplot畫曼哈頓圖時遇到一個bug:
Error in if (sum(pvalueT <= 0) != 0 || sum(pvalueT > 1) != 0) stop("p values should be at range of (0, 1).") :
missing value where TRUE/FALSE needed
> pmap <- read.csv("pmap.csv")
> CMplot(pmap, threshold = threshold, amplify = F, memo = "", file = "tiff", plot.type=c("m","q"))
Error in if (sum(pvalueT <= 0) != 0 || sum(pvalueT > 1) != 0) stop("p values should be at range of (0, 1).") :
missing value where TRUE/FALSE needed
看字面的意思是p值需要在(0-1)之間,去檢查了原始數(shù)據(jù),沒有在范圍外的,猜想可能是最近換了電腦,R版本的問題?;氐脚f電腦,R版本4.0.4,畫圖沒有報錯。新電腦R版本4.2.0報錯,更換到4.0.4依舊報錯。那只能猜想是CMplot版本的問題。
查看舊電腦中CMplot版本,Version:3.6.2

DESCRIPTION_old
查看新電腦中CMplot版本,Version:4.0.0

DESCRIPTION_new
果然,可以確定是CMplot版本的問題了,隨后解決問題。
1.檢查數(shù)據(jù):
> any(is.na(pmap))
[1] TRUE
存在缺失值
2.刪除缺失值所在行
> pmap<-na.omit(pmap)
3.再次檢查數(shù)據(jù)
> any(is.na(pmap))
[1] FALSE
4.重新繪圖
> CMplot(pmap, threshold = threshold, amplify = F, memo = "", file = "tiff", plot.type=c("m","q"))
繪圖成功~~
總結(jié):2022-01-13之后下載的CMplot不支持數(shù)據(jù)中有缺失值,需要剔除再進行繪圖。
如果有遇到相同問題的小伙伴,希望我今天踩的坑,可以幫到你們!
引用轉(zhuǎn)載請注明出處,如有錯誤敬請指出。