'NAMESPACE' 中指定但未在包中定义的 S4 导出

S4 exports specified in 'NAMESPACE' but not defined in package

我刚刚完成了对我在 CRAN 上使用了几年的 R 包的一些小更新(有一段时间没有更新)。我的包裹在我的本地机器和 winbuilder 上通过了检查,但它只是从 CRAN 返回并显示消息

checking whether package 'riverdist' can be installed ... WARNING
Found the following significant warnings:
  Warning: S4 exports specified in 'NAMESPACE' but not defined in package 'riverdist'

我使用 roxygen2 来构建我的包 NAMESPACE,并且没有任何我知道的 S4 导出。

也许这可能与 R 版本 4.0.0 中的更改有关?

如果有人遇到此错误,我很想听听您是如何解决的。谢谢!

已解决。 roxygen2 的 @exportClass 添加到用于 S4 类 的名称空间 exportClasses()。 S3 类 不需要导出,只需要导出构造函数和方法函数,这是使用 @export 完成的。在我的例子中,删除所有 @exportClass 命令解决了问题,因为我的包只定义了 S3 类。因此,实际上警告消息在诊断 S4 导出时是正确的。在昨天的帮助下 from a thread in R-package-devel mail list 找到了答案。

就我的包而言,问题只存在于一个包中,而其他 9 个包也触发了警告。

警告仅在 r-devel(未来的 R 4.1.0)下触发。

我从 rdevel 收到了这条消息

“这是 R-devel 中的新检查。新闻说:

R CMD check etc now warn when a package exports non-existing S4 classes or methods, also in case of no "methods" presence

在你的例子中,命名空间包含

exportClasses(classify)

exportClasses(gonad_mature)

exportClasses(morphMat)

但是你的包没有定义这些S4 类。

您似乎指示 roxygen2 使用以下命令创建这些无效指令 @exportClass 手动标记,而不仅仅是 @export。只需删除这些 源文件中错误的@exportClass 标签并重新生成你的 命名空间。

此致,

    Sebastian Meyer"

https://www.mail-archive.com/r-package-devel@r-project.org/msg05436.html