r语言 - 'NAMESPACE'中指定但未在包中定义的 S4 导出



我刚刚完成了对我在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 来构建我的包命名空间,并且没有任何我知道的 S4 导出。

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

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

已解决。 roxygen2 的@exportClass添加到用于 S4 类的命名空间exportClasses()。S3 类不需要导出,只应导出构造函数和方法函数,这是使用@export完成的。在我的情况下,删除所有@exportClass命令解决了问题,因为我的软件包只定义了 S3 类。因此,警告消息在诊断 S4 导出时确实是正确的。在昨天的 R-package-devel 邮件列表中的线程的帮助下找到了答案。

就我的软件包而言,问题仅存在于一个软件包中,其他 9 个也触发警告的软件包也依赖于该软件包。

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

我收到了来自 rdevel 的这条消息

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

R CMD 检查等现在会在包导出不存在的 S4 类或方法时发出警告,即使在不存在"方法"的情况下也是如此

在您的情况下,命名空间包含

导出类(分类(

导出类(gonad_mature(

exportClasses(morphMat(

但您的软件包未定义这些 S4 类。

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

此致敬意

Sebastian Meyer"

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

最新更新