这真的开始让我烦恼......我尝试了几种方法,但似乎都不起作用
我正在从一个函数运行安装,该函数会生成许多我想抑制的不必要的消息,但我尝试执行此操作的所有方法都不起作用。
我试图抑制的代码是:install_github('ROAUth', 'duncantl')
,它需要预先加载包devtools
。
无论如何,我尝试了invisible
、capture.output
和sink
,但没有一个起作用......或者也许我没有使用它们正确...无论哪种方式...有什么想法吗?
最佳答案
suppressMessages
将关闭一些消息(那些通过调用 message
打印的消息),但不是全部。
其余消息来自通过 system2
函数对 R CMD INSTALL
的调用。我认为这是因为这是因为你尝试过的所有常用方法(sink
、capture.output
等)都不起作用。请注意,system2
函数带有 stderr
和 stdout
参数,如果将其设置为 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/