R DESeq2";不允许使用NA值”;当any(is.na(counts))=FALSE时出错

R DESeq2";不允许使用NA值”;当any(is.na(counts))=FALSE时出错,r,dataframe,bioinformatics,R,Dataframe,Bioinformatics,我有一个计数矩阵,里面有NA值 我使用 counts[is.na(counts)] <- 0 我得到了错误 Error in validObject(.Object) : invalid class “DESeqDataSet” object: NA values are not allowed in the count matrix 这看起来很清楚,但我不明白,因为我把所有的NA值都设置为0,现在如果我这样做了 any(is.na(counts)) 我猜错了 非常感谢您的帮助,谢谢

我有一个计数矩阵,里面有NA值

我使用

counts[is.na(counts)] <- 0
我得到了错误

Error in validObject(.Object) : invalid class “DESeqDataSet” object: NA values are not allowed in the count matrix
这看起来很清楚,但我不明白,因为我把所有的NA值都设置为0,现在如果我这样做了

any(is.na(counts))
我猜错了


非常感谢您的帮助,谢谢

如果您只有NAs,它应该可以工作

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)
看起来是这样的:

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), colData = data.frame(colnames(counts)), design = ~1)

很可能是你的母体里有什么奇怪的东西。您可以执行
dput(头(计数,5))
并粘贴输出吗?或者做一个
str(counts)
并粘贴这是前几行结构(list(SP106993=c(7432131296207158638850827),SP106998=c(177012251235466241129265166216),SP107004=c(149155596111739052…和str(counts)str(LIRIJPRawCounts)“data.frame”:22913 obs.共445个变量:$SP106993:num 74 321312 96207 1586388 50827…$SP106998:num 1770 12251235 2546624 1129265 166216…$SP107004:num 1491 5559611 1739052 2319073 155238…您需要所有的行吗?看起来您有一个data.frame,但没问题,
表(sapply(data.frame(counts),class))
,都是数字吗?
.Machine$integer.max
[1] 2147483647
DESeqDataSetFromMatrix(round(counts/2), colData = data.frame(colnames(counts)), design = ~1)