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

Mat*_*ers 5 r r-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'
Run Code Online (Sandbox Code Playgroud)

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

也许这可能与 R 版本 4.0.0 的变化有关?

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

Ped*_*alo 2

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

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

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