【问题标题】:DESeq2 "NA values are not allowed" error when any(is.na(counts)) = FALSE当任何(is.na(counts))= FALSE时,DESeq2“不允许NA值”错误
【发布时间】:2020-10-27 11:56:02
【问题描述】:

我有一个计数矩阵,其中包含 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))

我猜错了。

任何帮助都非常感谢谢谢!

【问题讨论】:

  • 你的矩阵中很可能有一些奇怪的东西。你能做dput(head(counts,5)) 并粘贴输出吗?或执行str(counts) 并粘贴
  • 这是前几行结构(list(SP106993 = c(74, 321312, 96207, 1586388, 50827), SP106998 = c(1770, 12251235, 2546624, 1129265, 166216), SP107 c(1491, 5559611, 1739052 ...
  • 对于 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 ... SPAILS
  • 你需要所有的行吗?
  • 好像你有一个 data.frame 但没关系,table(sapply(data.frame(counts),class)),都是数字?

标签: r dataframe bioinformatics


【解决方案1】:

如果您只有 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,size=1),100,10)
colnames(counts) = paste0("c",1:10)
counts[1] = 2.5e9

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 2018-09-18
    • 2023-01-30
    相关资源
    最近更新 更多