【问题标题】:R - suppressMessages / suppressWarnings not workingR - suppressMessages / suppressWarnings 不起作用
【发布时间】:2026-01-28 10:00:02
【问题描述】:

我尝试过使用 suppressMessages(expr)、suppressWarnings(expr)、 但他们一直在输出消息。

例如:

suppressWarnings(ksvm(y~., data=data, type='C-svc', cross=5, kernel=kernel))

不断生成此消息。

设置默认内核参数

如何禁止来自库的消息?有没有办法在全球范围内做到这一点?

试过了:

{r messages=FALSE, warnings=FALSE}

【问题讨论】:

    标签: r suppress-warnings


    【解决方案1】:

    如果它没有说这是一个警告,你应该使用suppressMessages。尝试将函数调用放在大括号中:

    suppressMessages({ksvm(y~., data=data, type='C-svc', cross=5, kernel=kernel)})
    

    【讨论】:

      【解决方案2】:

      这里是生成输出的行的链接:https://github.com/cran/kernlab/blob/master/R/ksvm.R#L88

      我们看到消息显示为cat() 而不是message()suppressMessages() 不会抑制 cat 输出。

      有多种方法可以消除cat 输出。一种是捕获消息,然后像这样隐藏它:

      invisible(capture.output(ksvm(...)))
      

      【讨论】:

      • 谢谢你的工作。我对 R 很陌生,这真的很糟糕。我希望图书馆会使用某种可以轻松抑制的日志记录机制。有没有办法抑制所有这些“cat”、“print”或库中的其他输出?
      • @coolscitist 好吧,我认为他们应该使用message()warning() 等。但有些没有。我不知道他们是否有理由不使用这些,或者只是通常不知道向用户显示消息的标准方式。为了抑制 cat - 就像提到的那样,您可以使用多种技巧。一些可以在这里找到:*.com/q/5310393/1953718
      • @coolscitist 您也可以尝试编写自己的函数suppressCat() 或类似的东西。这个答案可能对此有所帮助:stat.ethz.ch/pipermail/r-help/2008-January/151465.html
      【解决方案3】:

      您可以将一个空列表传递给 kpar 参数。

      点赞ksvm(y~., data=data, type='C-svc', cross=5, kernel=kernel, kpar = list())

      【讨论】: