将代码推迟到knitr中的END文档

Han*_*olo 14 r knitr r-markdown

我正在尝试在rmarkdown中编写报告,然后使用knitr生成pdf.

我希望将所有代码推送到"文档的结尾",同时只显示与我的文本交织的结果.该echo='hold'选项不会这样做.

我的降价文件的一部分

Generate data

```{r chunk1,echo='hold',R.options=}
num_seq<-rnorm(100,0.2)
num_seq
```

We further report the mean of these numbers.  

```{r,echo='hold' }
mean(num_seq)
```
Run Code Online (Sandbox Code Playgroud)

我试过阅读这里找到的相关文档http://yihui.name/knitr/options/,但我无法弄清楚如何做到这一点.

r2e*_*ans 14

我认为echo='hold'不是一种选择.无论如何,诀窍是使用echo=FALSE包含代码的位置,然后重复使用相同的块名称并使用eval=FALSE您希望打印代码的位置.(两个地方的其他选项都很好,但这两个是最低要求.)

以下内容评估了块所在的代码(并且可选地包括它的输出),但在指定之前不包括代码.

# Header 1

```{r chunk1, echo=FALSE}
x <- 1
x + 5
```

This is a test.

```{r chunk1, eval=FALSE}
```
Run Code Online (Sandbox Code Playgroud)

结果如下降价:

Header 1
========

    ## [1] 6

This is a test.

    x <- 1
    x + 5
Run Code Online (Sandbox Code Playgroud)

编辑:我经常在随机性的R降价文档中使用它:我在最开始存储随机种子(无论我是手动设置还是只存储当前的随机状态以便以后再现)并将其显示在附件/附录中:

# Header 1

```{r setseed, echo=FALSE, include=FALSE}
set.seed(seed <- sample(.Machine$integer.max, size=1))
seed
```

This is a test `r seed`.

# Annex A {-}

```{r showsetseed, ref.label='setseed', eval=FALSE}
```

```{r printseed, echo=FALSE}
seed
```
Run Code Online (Sandbox Code Playgroud)

此示例不包括原始代码块的结果.不幸的是,结果没有存储,如果我eval=TRUE在以后使用相同的块名称时设置,它将计算并呈现不同的种子.这就是printseed块的原因.我seed在第一个setseed块中明确"显示"的原因完全在于,在附件中,块showsetseedprintseed块流畅.(否则,set.seed不返回数字,所以它看起来很奇怪.)

顺便说一句:第二个例子使用ref.label,Yihui 在这里将其作为块重用的更通用方法.

BTW#2:当我说"存储随机状态"时,这并不完全正确......我正在存储一个随机生成的种子.当然,随机状态本身比单个整数大得多.我不想激怒PRNG众神:-)