从lapply抑制Rmarkdown中的列表符号

时间:2019-01-22 01:49:32

标签: r r-markdown lapply

我正在使用Rmarkdown生成报告。步骤之一包括将lapply()与产生绘图的函数配合使用,以产生多个绘图。函数和lapply可以很好地工作,但是我得到了关于每个图之间列表中哪个元素的注释。

knitr::opts_chunk$set(echo = TRUE)
library(tidyverse)

#{r pressure, echo=FALSE}
myPlotFun <- function(z){
      diamonds %>%
            filter(color == !!z) %>%
            ggplot(aes(x= carat, y = price))+
            geom_point()
}
myList <- c("E","D","H")
lapply(myList, myPlotFun)

我得到:

'## [1]

plot1 `##

`## [2]

plot2

如何隐藏绘图之间的列表符号(例如## [{2])行? 使用include = FALSE隐藏图和列表符号,这不是我想要的。我尝试警告= FALSE,但这无济于事。

1 个答案:

答案 0 :(得分:2)

这些数字是lapply中的工件。删除它们的最简单方法是改为使用for循环。否则,您可以创建一个钩子,以除去除图形外的所有其他输出:

```{r}
def <- knitr::knit_hooks$get("output")
knitr::knit_hooks$set(output = function(x, options) {
  x <- def(x, options)
  ifelse(!is.null(options$suppress), gsub(pattern = "```.*```", "", x), x)
})
```

只需为相关块设置suppress = T