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

R 将现有包中的S4对象作为插槽包含在新S4类中,r,class,s4,R,Class,S4,我正在编写一个名为Expression的S4类,并希望包含一个S4对象,DESeq2=“DESeqDataSet”作为插槽: setClass( Class = "Expression", representation = representation ( species = "character", edgeR = "DGEList", DESeq2 = "DESeqDataSet", lengths = "matrix", individuals =

我正在编写一个名为
Expression
的S4类,并希望包含一个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"
))
但是,当我检查包时,我得到以下警告:

Found the following significant warnings:
  Warning: undefined slot classes in definition of "Expression": DESeq2(class "DESeqDataSet")
该类工作正常(即,现在有错误),但我想修复代码中的所有警告

带有
DESeqDataSet
对象(
DESeq2
,也是我们为插槽指定的名称)的包将导入包
DESCRIPTION
文件中。我是否需要做一些其他的事情来让它的内容可以在插槽中使用?例如,我使用
setOldClass()
使S3类可以在S4插槽中使用

下面是travis ci构建的一个示例,该构建抛出警告-


给出问题的完整代码位于

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

importClassesFrom("DESeq2", "DESeqDataSet")

我相信roxygen2表示法是从DESeq2 DESeqDataSet导入的
@importClass
类定义需要导入,就像函数、泛型和方法一样。所以在名称空间文件中说

importClassesFrom("DESeq2", "DESeqDataSet")

我相信roxygen2表示法是来自DESeq2 DESeqDataSet的
@importClass

您可以通过使用setClass函数的“contains”参数来解决您的问题。包含可以定义任何类型或对象

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"
    ), 
    contains = c("DGEList", "DESeqDataSet")
)

希望这有帮助。

您可以使用setClass函数的“contains”参数来解决问题。包含可以定义任何类型或对象

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"
    ), 
    contains = c("DGEList", "DESeqDataSet")
)

希望这有帮助。

非常有用-谢谢。我在我的类文档中添加了roxygen2行,警告消失了。非常感谢。我试过了,错误没有消失。后来我发现这是因为我没有手动在
说明
文件中包含
导入:…
。非常有用-谢谢。我在我的类文档中添加了roxygen2行,警告消失了。非常感谢。我试过了,错误没有消失。后来我发现这是因为我没有手动将
Imports:..
包含在
DESCRIPTION
文件中。