微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当anyis.nacounts= FALSE时,DESeq2“不允许使用NA值”错误

如何解决当anyis.nacounts= FALSE时,DESeq2“不允许使用NA值”错误

我有一个包含NA值的计数矩阵。

我使用设置它们为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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。