10

当我使用 knitr 从以下代码构建 HTML 文档时:

Chunk Output
========================================================

Outside a chunk.

```{r chunk1, results='asis'}

cat('Inside a chunk\n\n')

for (i in 1:3) {
    cat('* Inside loop #', i, '\n')
}

cat('Outside a loop, but still inside the first chunk')
```

Between chunks.

```{r chunk2, results='asis'}

cat('Inside second chunk')

```

我得到输出,其中的代码与语句chunk1的输出交错。cat有趣的是,for循环内的输出作为单个块输出。

我希望所有的代码chunk1首先出现,然后是所有的输出chunk1有没有办法让 Rmarkdown/knitr 避免它目前正在做的更细粒度的交织?

4

1 回答 1

11

这是我提出的解决方案

Chunk Output
========================================================

Outside a chunk.

```{r chunk1, results='hide'}

cat('Inside a chunk\n\n')

for (i in 1:3) {
    cat('* Inside loop #', i, '\n')
}

cat('Outside a loop, but still inside the first chunk')
```

```{r ref.label = 'chunk1', results = 'asis', echo = F}

```

在最新版本的 knitr 中,@yihui 添加了一个新的块选项results = "hold",它自动将所有输出的打印保存到最后。因此,我们可以只写

Chunk Output
========================================================

Outside a chunk.

```{r chunk1, results='hold'}

cat('Inside a chunk\n\n')

for (i in 1:3) {
    cat('* Inside loop #', i, '\n')
}

cat('Outside a loop, but still inside the first chunk')
```
于 2013-08-30T00:03:56.433 回答