我正在尝试为一个R函数实现一个quiet
参数,该函数有很多cli
消息。
我想像options(suppressMessages(classes = "cliMessage"))
这样的东西(它不工作),只用一行代码就可以抑制所有的cliMessage。
大概是这样的
name <- function(variables, quiet = FALSE) {
if(quiet == TRUE){
options......
}
cli::cli_alert_info("example1")
cli::cli_alert_info("example2")
cli::cli_alert_info("example3")
cli::cli_alert_info("example4")
}
创建它的一种详细方法是:
name <- function(variables, quiet = FALSE) {
if(quiet == TRUE){
cli::cli_alert_info("example1") %>%
suppressMessages(classes = "cliMessage")
cli::cli_alert_info("example2") %>%
suppressMessages(classes = "cliMessage")
cli::cli_alert_info("example3") %>%
suppressMessages(classes = "cliMessage")
cli::cli_alert_info("example4") %>%
suppressMessages(classes = "cliMessage")
}
cli::cli_alert_info("example1")
cli::cli_alert_info("example2")
cli::cli_alert_info("example3")
cli::cli_alert_info("example4")
}
但是我必须重写所有的函数两次
1条答案
按热度按时间z9smfwbn1#
你有几个选择。
1.告诉你的用户使用
suppressMessages(name())
来隐藏消息,这也会隐藏来自下游函数和message()
的消息。1.有条件地发送消息:
1.在函数中设置
cli.default_handler
选项,然后在on.exit()
中恢复该选项:这不仅抑制来自cli的消息,而且抑制来自下游函数(即,来自
name
中调用的函数)的消息。