如何在RMarkdown中合并和打印多个代码块?

时间:2018-10-23 15:30:59

标签: r r-markdown

我的Rmarkdown文档看起来像这样。

---
yaml metadata
---

```{r}
x <- 10
```

Some code explanation

```{r}
y <- 10
```

Some more code explanation

```{r}
z <- x + y
```

The final output

```
# 10
```

由于我遵循文化编程的概念,因此如何将这些多个代码块打印在一起,因此可以按以下方式打印出整个工作代码,而无需代码说明。另外,我可以选择特定的代码块而不是全部并打印出来吗?

x <- 10
y <- 10
z <- x + y

1 个答案:

答案 0 :(得分:3)

一种技巧是使用knitr的{​​{1}}块选项(需要一个或多个块标签)。它要求您标记块(至少要重复的块)。为了演示,我“隐藏”(ref.label="")块之一,以表明尽管输出仍可以就地执行,但它可以偏移(如https://stackoverflow.com/a/30243074/3358272)。

echo=FALSE

渲染时生成此markdown文件:

---
output: md_document
---

```{r block1}
x <- 10
```

Some code explanation, next code block hidden here but still evaluated

```{r block2, echo = FALSE}
y <- 10
```

Some more code explanation

```{r block3}
z <- x + y
```

The final output

```
# 10
```

# Annex 1

Each block individually:

```{r showblock1, ref.label='block1', eval=FALSE}
```
```{r showblock2, ref.label='block2', eval=FALSE}
```
```{r showblock3, ref.label='block3', eval=FALSE}
```


# Annex 2

If you want them more compactly concatenated:

```{r showblocks, ref.label=c('block1','block2','block3'), eval=FALSE}

您可以将其渲染为所需的任何格式,结果应该相似。