我目前使用以下标题:
```{r, message=FALSE}
foo <- function(x) message(x)
for(i in 1:10) foo(i)
```
在这个代码块中,有一个模拟场景的循环,message()
函数打印当前执行场景的状态。
我想在RStudio和最终的HTML输出中禁止显示这些消息,但我仍然希望控制模拟进度并在控制台中查看message()
输出。这可以实现吗?也许还有其他参数/函数?
答案 0 :(得分:0)
您可以在文件中写入/追加状态(这是一种解决方法,应该有更直接的答案)。
例如:
file <- file("status.txt", open = "wt")
sink(file, type = "message")
message("all good")
在此示例中,不会显示消息 - 它将被写入status.txt
文件。
在您使用特定功能并迭代一组时,您可以尝试以下示例:
foo <- function(x) {
message(x)
}
file <- file("status.txt", open = "wt")
sink(file, type = "message")
for(i in 1:3) {
foo(i)
}
函数foo
应该返回(消息)值,但是它会将其附加到status.txt
文件。
您可以使用带有status.txt
参数的bash tail
命令跟踪-f
文件中的更改。首先将R发送到后台,然后在控制台中使用tail -f status.txt
。
答案 1 :(得分:0)
一种方法是将其放在文件的开头。
mymessage <- function (text) {
if(knitr::opts_knit$get('out.format') != NULL) message(text)
}
有多种方法可以知道你是否在knitr中,最近的版本有knitr::is_latex_output
和类似的。