如何在每个会话中仅显示一次警告?

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

我的软件包中有一项功能,应谨慎使用。

用户应该意识到这一点,但是如果他/她认为情况还可以,那么每次调用该函数时都会显示警告。

我经常看到只显示一次的警告。他们很难调试,所以我找不到可复制的示例(如果有的话我会添加一个示例),但是它们显示特定的警告消息,后跟rlang info:

此警告每个会话显示一次

[有很多想要调试这些消息的帮助(例如hereherehere,只是google“ r该警告在每个会话中显示一次”)]

我认为程序包lifecyle经常将其用于软弃用,但我无法在lifecycle:::lifecycle_build_message中发现窍门。

如何在包裹中发出这样的警告?

编辑:

这里是可复制的示例。您必须重新启动R会话才能再次显示。如您所见,options(warn=2)没有影响。

options(warn=2)
xx=c("Sepal.Width")
tidyselect::vars_select(names(iris), xx)
r lifecycle rlang
1个回答
1
投票

[在tidyselect::vars_select的情况下,窍门在tidyselect:::inform_once中。

维护一个环境tidyselect:::inform_once,记录是否已显示给定消息。

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