修改后无法检查 S4 对象

Can not inspect S4 object after modification

我的 S4 对象 res 在向其附加值列表后出现问题。该对象是使用 DESeq2 包创建的。该对象是通过以下方式创建的:

dds <- DESeqDataSetFromMatrix(countData = count.matrix,
                              colData = coldata,
                              design = ~ Condition)
dds <- DESeq(dds, test = "Wald")
res <- results(dds)

我做了以下事情:

x <- qvalue(res@listData[["pvalue"]])    #calc qvalues based on pvalues from S4 object 'res'
res@listData[["qval"]] <- x[["qvalues"]] #append qvalues from x to 'res' as new col named "qval"

现在,当我尝试使用 head() 检查对象时,出现以下错误:

> head(res)
Error in `rownames<-`(`*tmp*`, value = names(x)) : 
  invalid rownames length

有趣的是,使用 View() 我可以在 RStudio 中检查 S4 对象,我可以看到一切正常,添加了 qvalues。有谁知道为什么会这样?有没有办法避免这种情况?

为了获得 qvalues.. 你可以先这样做:

library(qvalue)
library(DESeq2)

dds = makeExampleDESeqDataSet()
dds = DESeq(dds)
res = results(dds)
res$qvalue = qvalue(res$pvalue)$qvalue

我会跟进为什么有错误..你需要看看它是如何构造的。