当我使用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')
```
I get output其中chunk1
中的代码与cat
语句的输出交错。有趣的是,for
循环中的输出作为单个块输出。
我希望首先显示chunk1
中的所有代码,然后显示chunk1
中的所有输出。有没有办法让Rmarkdown / knitr避免它目前正在进行的更细粒度的交织?
答案 0 :(得分:9)
这是我提出的解决方案
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')
```