将代码延迟到 knitr 文档的末尾

Defer code to END of document in knitr

我正在尝试在 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)
```

我已尝试阅读此处 http://yihui.name/knitr/options/ 的相关文档,但我不知道该怎么做。

我认为 echo='hold' 不是一个选项。无论如何,诀窍是在包含代码的地方使用 echo=FALSE,然后 重新使用相同的块名称 并使用 eval=FALSE 你想要打印代码的地方。 (两个位置的其他选项都可以,但这两个是最低要求。)

以下计算块所在的代码(并可选地包括它的输出),但在您指定之前不包括代码。

# Header 1

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

This is a test.

```{r chunk1, eval=FALSE}
```

结果如下:

Header 1
========

    ## [1] 6

This is a test.

    x <- 1
    x + 5

编辑:我经常在随机性的 R markdown 文档中使用它:我在一开始就存储了随机种子(无论是手动设置还是只存储当前的随机状态供以后复制)并将其显示在 annex/appendix:

# 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
```

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

顺便说一句:第二个示例使用 ref.label,易慧文档 here 作为更通用的块重用方法。

顺便说一句 #2:当我说 "store the random state" 时,这并不完全正确……我正在存储一个随机生成的种子。当然,随机状态本身比单个整数大得多。我不想激怒 PRNG 之神 :-)