在 R 中,如何从包中的导入类对对象进行子类化



我正在处理一个R包并导入某个库。 我正在创建一个从导入的库中继承类的类。

在我的描述文件中,我有:

...
Imports:
    importedPackage

然后我有一个类声明:

setClass("mySampleClass",
     slots = list(
       numUp = "numeric",
       numDown = "numeric"
     ),
     contains = "classToExtend"
)

如果我正在导入导入包,我知道我需要将该包中的函数引用为 importedPackage::someFunction() . 我不能这样做,尽管在这里我的类声明中的contains =部分。 现在,它在构建时告诉我:

Error in reconcilePropertiesAndPrototype(name, slots, prototype, superClasses,  : 
   no definition was found for superclass “importedPackage::classToExtend” in the specification of class “mySampleClass”

我已经尝试了几种不同的方法来解决这个问题。 这似乎是某人以前必须遇到的那种问题,但到目前为止,我无法找到谷歌如何正确执行此操作。 提前感谢您的任何帮助。

我遇到了同样的问题。如果您有具有继承关系的 S4 类,并且这些类位于不同的 .R 文件,则包含超类 (classToExtend) 的文件必须在子类 (mySampleClass) 之前加载。

这可以使用 roxygen2 包来完成,您可以在 mySampleClass 文件中进行文档,

#' @include <file name containing classToExtend definition>  

这基本上意味着适用于该文件,而不是下面遵循的直接代码行。

因此,这基本上是在 DESCRIPTION 文件中创建一个整理字段,并且首先列出依赖项。

最后,为了让 roxygen 执行整理操作,您可能需要手动运行它。

roxygen2::update_collate(<package name>)

如果要完全生成文档,请包含任何命名空间更改,然后使用

devtools::document(<package name>)

这里有一个问题,讨论包括排序顺序:如何在 Roxygen2 中指示排序顺序?

以下是 roxygen2 文档: http://roxygen.org/roxygen2-manual.pdf

相关内容

  • 没有找到相关文章

最新更新