隐藏RMarkdown中的打印语句

时间:2017-10-09 18:00:33

标签: r r-markdown

有没有办法在RMarkdown中隐藏打印语句?我编写了一个函数,它将有关算法学习行为的进度打印到R控制台。这是一个例子:

f <- function() {
  print("Some printing")
  return(1)
}

在RMarkdown我有

```{r, eval = TRUE, results = "show"}
res = f()
print(res)
```

这会在RMarkdown输出文件中添加“Some printing”和1。有没有办法抑制“一些打印”,但保持功能的输出(这里1)?对于警告,错误和消息,有选项,但我找不到打印语句。

1 个答案:

答案 0 :(得分:2)

如果您在函数中使用message而不是print,则可以取消消息

```{r} 
f <- function() {
    message("Some printing")   # change this line
    return(1) 
}

res <- f()    
print(res)    # original prints both  
```
#> Some printing
#> [1] 1

明确地使用suppressMessages

```{r} 
res <- suppressMessages(f())
print(res) 
```
#> [1] 1

或通过message=FALSE chunk选项:

```{r, message=FALSE} 
res <- f()
print(res) 
```
#> [1] 1

为此类用途而设计的消息。如果你真的想保留print,你可以使用子集(这很笨拙),或者使用capture.output来捕获和存储消息,同时将结果存储在另一个变量中:

```{r}
f <- function() {
    print("Some printing")
    return(1)
}

trash <- capture.output(res <- f())   
print(res)
```
#> [1] 1

......但那仍然很尴尬。