最近在使用mfuzz这个包的时候总是出现这个错误,让我非常的纳闷,因为这个包从来都没有报错过,但是现在总是出现这种错误,这是什么鬼原因?谷歌了半天找到的相关报错却是牛唇不对马嘴,不是我要找的答案。那么只有自己动手了。
dfdataEx<- ExpressionSet(assayData =as.matrix(marker_exp))
dfdataF <- filter.NA(dfdataEx,thres = 0.25) ###运行这一句的时候会出现下面的错误
unable to find an inherited method for function ‘exprs’ for signature ‘"ExpressionSet"’
尝试一句句运行
> filter.NA
function (eset, thres = 0.25)
{
index <- logical(dim(exprs(eset))[1])
for (i in 1:dim(exprs(eset))[1]) {
index[i] <- (((sum(is.na(exprs(eset)[i, ]))/dim(exprs(eset))[2])) >
thres)
}
cat(paste(sum(index), "genes excluded.\n"))
eset[!index, ]
}
<bytecode: 0x558d79cbc010>
<environment: namespace:Mfuzz>
发现第一句exprs(eset)里面有问题,那么就是这个exprs有问题了
> exprs
standardGeneric for "exprs" defined from package "monocle3"
function (x)
standardGeneric("exprs")
<bytecode: 0x558d8f7cea58>
<environment: 0x558d8f7cb660>
Methods may be defined for arguments: x
Use showMethods("exprs") for currently available ones.
于是看到exprs竟然来自monocle3,这就是关键原因了。之前没有报错是因为在这个服务器上没有安装过monocle3,但是前段时间安装后之后就出现了问题,因为它重写了exprs的这个函数,所以这个函数没法操作相应的expressionset自然是必然的。要纠正这一点也很简单
exprs=Biobase::exprs
这样就不会报错了