在R控制台中抑制闪亮的警告信息

ram*_*esh 6 r shiny

我们开发了一个闪亮的应用 它显示了一些警告信息,我们从不打扰它,因为应用程序运行正常.但是,我们无法分发应用程序,并在控制台中显示警告消息.现在我的问题是,当闪亮的应用程序运行时,如何在R控制台中抑制警告消息.

小智 13

在您的ui脚本中插入此内容.

tags$style(type="text/css",
         ".shiny-output-error { visibility: hidden; }",
         ".shiny-output-error:before { visibility: hidden; }"
)
Run Code Online (Sandbox Code Playgroud)


the*_*ist 5

您实际上有两个通过 R 的抑制函数,它们对您的工作方式不同:

suppressMessages()忽略所有“简单”诊断消息的上下文中计算其表达式。”请参阅?suppressMessages

  • suppressWarnings()忽略所有警告的上下文中计算其表达式。见?suppressWarnings

例子:

f <- function(a) { a ; warning("This is a warning") ; message("This is a message not a warning")}

> f(1)
This is a message not a warning
Warning message:
In f(1) : This is a warning

> suppressWarnings(f(1))
This is a message not a warning

> suppressMessages(f(1))
Warning message:
In f(1) : This is a warning
Run Code Online (Sandbox Code Playgroud)


And*_*rau 4

围绕suppressWarnings你的代码应该可以工作。看?suppressWarnings。你需要做类似的事情:

atest <- function(n) {warning("a warning"); return(n+1)}
atest(1)
#[1] 2
#Warning message:
#In atest(2) : a warning

suppressWarnings(atest(1))
#[1] 2
Run Code Online (Sandbox Code Playgroud)

但我认为更好的解决方案是实际处理警告而不是忽略它。

  • 您还可以通过 CSS 隐藏与闪亮相关的消息。`.shiny-output-error { 可见性:隐藏;}` 和 `.shiny-output-error:before { 可见性:隐藏;}`。后端仍然会生成警告,只是不会向用户显示。 (7认同)