r - 抑制 R 中的安装输出

标签 r suppressmessage

这真的开始让我烦恼......我尝试了几种方法,但似乎都不起作用

我正在从一个函数运行安装,该函数会生成许多我想抑制的不必要的消息,但我尝试执行此操作的所有方法都不起作用。

我试图抑制的代码是:install_github('ROAUth', 'duncantl'),它需要预先加载包devtools

无论如何,我尝试了invisiblecapture.outputsink,但没有一个起作用......或者也许我没有使用它们正确...无论哪种方式...有什么想法吗?

最佳答案

suppressMessages 将关闭一些消息(那些通过调用 message 打印的消息),但不是全部。

其余消息来自通过 system2 函数对 R CMD INSTALL 的调用。我认为这是因为这是因为你尝试过的所有常用方法(sinkcapture.output 等)都不起作用。请注意,system2 函数带有 stderrstdout 参数,如果将其设置为 FALSE 将关闭所有这些参数消息。不幸的是,system2默认使用stdout = ""stderr = "",并且似乎没有办法通过devtools包。

因此,我设法在没有任何消息的情况下运行的一种方法是暂时覆盖基础环境中的 system2 函数。它不是特别优雅,但很有效:

# store a copy of system2
assign("system2.default", base::system2, baseenv())

# create a quiet version of system2
assign("system2.quiet", function(...)system2.default(..., stdout = FALSE,
                                                     stderr = FALSE), baseenv())

# overwrite system2 with the quiet version
assignInNamespace("system2", system2.quiet, "base")

# this is now message-free:
res <- eval(suppressMessages(install_github('ROAUth', 'duncantl'))) 

# reset system2 to its original version
assignInNamespace("system2", system2.default, "base")

关于r - 抑制 R 中的安装输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416076/

相关文章:

R:dplyr 和 row_number() 未按预期枚举

r - 处理 RSelenium 错误消息

c# - Global.asax 中 Application_Start 的 StyleCop SP0100 错误

google-app-engine - 如何在运行单元测试时抑制 App Engine 日志记录?

r - 运算符 == 在 data.table 中的逻辑列中不一致

R 绘图在我的 Windows 上不起作用,但plot.default 可以

r - 逐行操作 data.frame 中的一列的更快方法是什么?

r - dplyr 在列子集上突变(所有这些列上的一个函数组合)

r - 在 R 中用返回而不是打印来抑制消息?