![](/img/trans.png)
[英]R LANGUAGE: Registered S3 method overwritten by 'data.table':
[英]how to suppress “S3 method overwritten” messages from being printed to user console
I have an R package called ggstatsplot
( https://indrajeetpatil.github.io/ggstatsplot/ ) which relies on a collection of packages that share a few S3
methods between each other. 因此,每次加载 package 时,用户都会收到有关此问题的消息轰炸,这对大多数用户来说没有用。
> 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
有什么我可以在 package 内部实现的东西,以避免这些消息被打印到用户的控制台? 也许使用.onAttach
东西?
快速查看 GitHub 上 package 的代码,在我看来,其中一些函数似乎应该从 NAMESPACE 中删除。
您正在使用@importFrom()
但是只需在DESCRIPTION 中添加一个“Imports:”声明,然后通过指定命名空间来调用函数,即package::function
就足够了。 这样一来,它们就不会附加到命名空间,也不会相互冲突。
仔细看了一下,似乎问题出在您导出的包上,而不是您的库本身。 因此,例如简单地调用library(broom.mixed)
会产生冲突。 由于您导出了它的一些导入(来自broomExtra
),因此会出现相同的冲突。
似乎在他们的 GitHub 上已经存在一个问题:这里最好的情况是向他们发出拉取请求。 或者,也许您实际上并不需要首先导出这些功能。
因此,每次加载 package 时,用户都会收到有关此问题的消息轰炸,这对大多数用户来说没有用。
作为一种“安心”的解决方法,用户可以在加载任何受影响的包之前简单地将环境变量_R_S3_METHOD_REGISTRATION_NOTE_OVERWRITES_
设置为0
、 no
或false
之一:
Sys.setenv(`_R_S3_METHOD_REGISTRATION_NOTE_OVERWRITES_` = "false")
背景:对于任何对更多细节感兴趣的人,在 rlang 的 GitHub 存储库中有一些关于使用 R 3.6 覆盖 S3 方法变得冗长的指导性对话。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.