如何禁止将“S3 方法覆盖”消息打印到用户控制台

Ind*_*til 9 r package package-development

我有一个名为ggstatsplot( https://indrajeetpatil.github.io/ggstatsplot/ )的 R 包,它依赖于一组S3相互共享一些方法的包。因此,每次加载包时,用户都会收到有关此问题的消息,这对大多数用户没有用。

> library(ggstatsplot)
Registered S3 method overwritten by 'broom.mixed':
  method      from 
  tidy.gamlss broom
Registered S3 methods overwritten by 'car':
  method                          from
  influence.merMod                lme4
  cooks.distance.influence.merMod lme4
  dfbeta.influence.merMod         lme4
  dfbetas.influence.merMod        lme4
Run Code Online (Sandbox Code Playgroud)

有什么我可以在包内部实现的东西,以避免这些消息被打印到用户的控制台?也许有什么用.onAttach

Kar*_*ius 5

快速查看了 GitHub 上包的代码,在我看来,其中一些功能应该从 NAMESPACE 中删除。

@importFrom()然而,您使用的是简单地在描述中添加一个“导入:”声明,然后通过指定命名空间来调用函数,即package::function就足够了。这样它们就不会附加到命名空间并且不会相互冲突。


仔细看了一下,似乎问题出在您导出的包上,而不是您的库本身。因此,例如简单地调用library(broom.mixed)会产生冲突。由于您导出其某些导入(from broomExtra),因此出现相同的冲突。

似乎他们的 GitHub 上已经存在一个问题:HERE所以最好的情况是向他们发出拉取请求。或者,也许您一开始就真的不需要导出这些函数。