CMplot报错missing value where TRUE/FALSE needed

今天在使用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)之间,去检查了原始数据,没有在范围外的,猜想可能是最近换了电脑,R版本的问题。回到旧电脑,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.检查数据:

> any(is.na(pmap))
[1] TRUE

存在缺失值

2.删除缺失值所在行

> pmap<-na.omit(pmap)

3.再次检查数据

> any(is.na(pmap))
[1] FALSE

4.重新绘图

> CMplot(pmap, threshold = threshold, amplify = F, memo = "", file = "tiff", plot.type=c("m","q"))

绘图成功~~

总结:2022-01-13之后下载的CMplot不支持数据中有缺失值,需要剔除再进行绘图。

如果有遇到相同问题的小伙伴,希望我今天踩的坑,可以帮到你们!

引用转载请注明出处,如有错误敬请指出。

你可能感兴趣的:(CMplot报错missing value where TRUE/FALSE needed)