问题描述
我使用设置它们为0
counts[is.na(counts)] <- 0
然后成功将它们设置为0,我可以看到这一点。
但是当我尝试使用时
DESeqDataSetFromMatrix(counts,colData = data.frame(colnames(counts)),design = ~1)
我得到了错误
Error in validobject(.Object) : invalid class “DESeqDataSet” object: NA values are not allowed in the count matrix
哪个看起来很清楚,但我不明白,因为我将所有NA值都设置为0,如果可以,现在将其设置为
any(is.na(counts))
我得到了假。
非常感谢您的帮助!
解决方法
如果您只有NA,它应该可以工作。
library(DESeq2)
counts = matrix(rnbinom(1000,mu=50,size=1),100,10)
colnames(counts) = paste0("c",1:10)
counts[sample(length(counts),10)] = NA
counts[is.na(counts)] <- 0
DESeqDataSetFromMatrix(counts,colData = data.frame(colnames(counts)),design = ~1)
如果您具有无穷大的值,则会给您一个略有不同的错误:
counts = matrix(rnbinom(1000,mu=100,1:10)
counts[1] = 2.5e9
DESeqDataSetFromMatrix(counts,design = ~1)
它看起来像这样:
converting counts to integer mode
Error in validObject(.Object) :
invalid class “DESeqDataSet” object: NA values are not allowed in the count matrix
In addition: Warning message:
In mde(x) : NAs introduced by coercion to integer range
由于无法将大数转换为整数而发生错误:
max(counts)
[1] 8007375876
as.integer(max(counts))
[1] NA
Warning message:
NAs introduced by coercion to integer range
这小于允许的最大值:
.Machine$integer.max
[1] 2147483647
出于分析目的,由于您对基因之间的差异更感兴趣,因此一种方法是按比例缩小矩阵
DESeqDataSetFromMatrix(round(counts/2),design = ~1)