R-markdown:在回显的代码和结果输出之间添加空行

时间:2019-07-07 20:39:17

标签: r r-markdown knitr pre

要在knitr中组合回显的R代码和输出结果,有一个方便的collapse=TRUE选项。但是默认情况下,它们之间没有空格,即给出以下Rmd:

```{r, echo=TRUE, include=TRUE, collapse=TRUE}
x <- matrix(1:6, nrow=2)
x
```

它将产生包装在<pre>标签中的输出:

x <- matrix(1:6, nrow=2)
x
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6

我想得到的是一条空行,将输出和代码分隔开,但是仍然合并为一个<pre>元素。

x <- matrix(1:6, nrow=2)
x

##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6

有没有办法做到这一点?我尝试在R块的末尾添加一个空行,但似乎已被删除。

2 个答案:

答案 0 :(得分:3)

```{r, echo=-3, include=TRUE, collapse=TRUE}
x <- matrix(1:6, nrow = 2)

x
```

这将添加一个空格,echo = -3将不返回第三行,因此返回:

x <- matrix(1:6, nrow = 2)

##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6

答案 1 :(得分:2)

您可以使用knitr块挂钩来定义新的块选项,而不是collapse,该钩子挂钩会折叠代码并使用其他空格输出。例如,您可以在设置块中添加:

Rmarkdown

---
output: html_document
---

```{r setup, include=FALSE}
hook_chunk = knitr::knit_hooks$get('chunk')

knitr::knit_hooks$set(chunk = function(x, options) {
  regular_output = hook_chunk(x, options)
  # collapse with vspace if collapse_vspace is TRUE
  if (isTRUE(options$collapse_vspace))
    gsub("```\n\n```", "", regular_output)
  else
    regular_output
})

knitr::opts_chunk$set(collapse_vspace = TRUE)
```

```{r, echo = TRUE}
x <- matrix(1:6, nrow=2)
x
```

HTML输出

htmloutput

一些有用的参考文献: