'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
我刚刚完成了对我在 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