如何保存详细输出

问题描述

我想将R函数的详细输出保存到变量或文件中。

换句话说,whatever_R_function(abc,verbose=TRUE)的详细控制台输出应保存在某个地方。

我尝试过玩verbose.output <- capture.output(whatever_R_function(abc,verbose = TRUE)),但是它不起作用,因为capture.output()仅捕获输出的非详细部分。

两个例子:

install.packages('devtools',verbose=TRUE)

library(emayili)
smtp <- server(host = '...',port = ...,username = '...',password = '...')
email <- envelope() %>%
    from('...') %>%
    to('...') %>%
    bcc('...') %>%
    reply('...') %>%
    subject('...') %>%
    html('...') %>%
    attachment('...')
smtp(email,verbose = TRUE)

谢谢。

R 4.0.2-RStudio 1.3.1093-macOS 10.15.7

解决方法

我没有深入研究install.packages代码,但是在verbose = TRUE时是smtp appears to use cat directed to stderr()

?capture.output帮助页面上显示:

发送到stderr()的消息(包括来自messagewarningstop的消息)被type = "message"捕获。请注意,这可能是“不安全的”,应谨慎使用。

所以,我相信如果您使用capture.output(...,type = "message"),应该会得到它。这很有可能也适用于install.packages

我不确定为什么这被认为是不安全的,或者您应该采取什么措施...