如何禁止将 "S3 method overwritten" 消息打印到用户控制台
how to suppress "S3 method overwritten" messages from being printed to user console
我有一个名为 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
有什么我可以在内部包中实现的,以避免将这些消息打印到用户的控制台吗?也许使用 .onAttach
?
快速查看了 GitHub 上的包代码,在我看来,其中一些功能似乎应该从 NAMESPACE 中删除。
您正在使用 @importFrom()
,但只需在 DESCRIPTION 中添加一个 "Imports:" 声明,然后通过指定命名空间调用函数,即 package::function
就足够了。这样一来,它们就不会附加到命名空间,也不会相互冲突。
仔细看了一下,问题似乎出在您导出的包上,而不是您的库本身。因此,例如简单地调用 library(broom.mixed)
会产生冲突。由于您导出了它的一些导入(来自 broomExtra
),因此出现了相同的冲突。
他们的 GitHub: HERE 似乎已经有一个问题,所以最好的情况是向他们发出拉取请求。或者,也许您真的不需要首先导出这些函数。
Therefore, every time the package is loaded, the user is bombarded with messages about this issue, which is not useful for the most users.
作为一种“安心”的解决方法,用户 可以简单地将环境变量 _R_S3_METHOD_REGISTRATION_NOTE_OVERWRITES_
设置为 one of 0
, no
or false
before 加载任何受影响的包:
Sys.setenv(`_R_S3_METHOD_REGISTRATION_NOTE_OVERWRITES_` = "false")
背景:有一些关于用 R 3.6 覆盖 S3 方法变得冗长的有益对话 over at rlang's GitHub repo 对于任何对更多细节感兴趣的人。
我有一个名为 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
有什么我可以在内部包中实现的,以避免将这些消息打印到用户的控制台吗?也许使用 .onAttach
?
快速查看了 GitHub 上的包代码,在我看来,其中一些功能似乎应该从 NAMESPACE 中删除。
您正在使用 @importFrom()
,但只需在 DESCRIPTION 中添加一个 "Imports:" 声明,然后通过指定命名空间调用函数,即 package::function
就足够了。这样一来,它们就不会附加到命名空间,也不会相互冲突。
仔细看了一下,问题似乎出在您导出的包上,而不是您的库本身。因此,例如简单地调用 library(broom.mixed)
会产生冲突。由于您导出了它的一些导入(来自 broomExtra
),因此出现了相同的冲突。
他们的 GitHub: HERE 似乎已经有一个问题,所以最好的情况是向他们发出拉取请求。或者,也许您真的不需要首先导出这些函数。
Therefore, every time the package is loaded, the user is bombarded with messages about this issue, which is not useful for the most users.
作为一种“安心”的解决方法,用户 可以简单地将环境变量 _R_S3_METHOD_REGISTRATION_NOTE_OVERWRITES_
设置为 one of 0
, no
or false
before 加载任何受影响的包:
Sys.setenv(`_R_S3_METHOD_REGISTRATION_NOTE_OVERWRITES_` = "false")
背景:有一些关于用 R 3.6 覆盖 S3 方法变得冗长的有益对话 over at rlang's GitHub repo 对于任何对更多细节感兴趣的人。