R-markdown: добавить пустую строку между отображаемым кодом и выводом результата - PullRequest
3 голосов
/ 07 июля 2019

Чтобы объединить отраженный код R и полученный результат в knitr, есть удобная опция 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 ]

3 голосов
/ 08 июля 2019
```{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
2 голосов
/ 08 июля 2019

Вы можете определить новый параметр чанка вместо collapse, используя крючки чанков knitr, которые сворачивают код и выводят с дополнительными пробелами. Например, вы можете включить в установочный блок:

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

Некоторые полезные ссылки:

...