将现有包中的 S4 对象作为插槽包含在新的 S4 类中

Cas*_*unn 1 r class s4

我正在编写一个名为 S4 的类,Expression并希望包含一个 S4 对象DESeq2 = "DESeqDataSet"作为插槽:

setClass(
Class = "Expression",
representation = representation (
    species = "character", 
    edgeR = "DGEList",
    DESeq2 = "DESeqDataSet",
    lengths = "matrix",
    individuals = "vector",
    treatments = "vector",
    id = "vector",
    samples = "vector",
    sample_prep = "vector",
    genome_type = "vector",
    molecule_type = "vector",
    blast_hit =  "vector",
    rRNA = "vector",
    protein = "vector"
))
Run Code Online (Sandbox Code Playgroud)

但是,当我检查包裹时,我收到以下警告:

Found the following significant warnings:
  Warning: undefined slot classes in definition of "Expression": DESeq2(class "DESeqDataSet")
Run Code Online (Sandbox Code Playgroud)

该类工作正常(即,现在有错误),但我想修复我们代码中的所有警告。

带有DESeqDataSet对象(DESeq2,也是我们给插槽的名称)的包被导入到包DESCRIPTION文件中。我是否需要做其他事情才能使其内容可用于插槽?例如,我曾经setOldClass()让 S3 类可用于 S4 插槽。

这是引发警告的 travis-ci 构建示例 - https://travis-ci.org/caseywdunn/agalmar/builds/138564256

给出问题的完整代码位于https://github.com/caseywdunn/agalmar/blob/a7c4013fcb5c924cfd6e1aa8e99f182ceec6fe20/R/utility_functions.R

Mar*_*gan 5

类定义需要导入,就像函数、泛型和方法一样。所以在 NAMESPACE 文件中说

importClassesFrom("DESeq2", "DESeqDataSet")
Run Code Online (Sandbox Code Playgroud)

我相信 roxygen2 符号是 @importClassesFrom DESeq2 DESeqDataSet