如何抑制 "S3方法被覆盖 "的信息被打印到用户控制台上?

问题描述 投票:3回答:1

我有一个R包,叫 ggstatsplot (https:/indrajeetpatil.github.ioggstatsplot。),它依靠的是一系列的包,这些包共享一些 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

我是否可以在包的内部实现一些东西来避免这些消息被打印到用户的控制台?也许可以使用 .onAttach?

r package package-development
1个回答
5
投票

迅速看了GitHub上的包的代码,在我看来,其中的一些函数应该从NAMESPACE中删除。

你使用的是 @importFrom() 然而,只要在DESCRIPTION中添加一个 "Imports: "声明,然后通过指定命名空间来调用函数,即 package::function 就足够了。这样它们就不会被附加到命名空间上,也不会相互冲突。


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

好像在他们的GitHub上已经有了一个问题。这里 所以最好的办法是向他们发出一个拉取请求。或者,也许你根本不需要导出这些函数。

© www.soinside.com 2019 - 2024. All rights reserved.