![](/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.