我正在尝试在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/中找到的相关文档,但我无法弄清楚如何执行此操作。
答案 0 :(得分: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}
```
以下降价结果:
Header 1
========
## [1] 6
This is a test.
x <- 1
x + 5
编辑:我经常在随机性的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
```
此示例不包含原始代码块的结果。不幸的是,结果没有存储,如果我在以后使用相同的块名称时设置eval=TRUE
,它将计算并呈现不同的种子。这就是printseed
阻止的原因。我明确&#34;显示&#34;的原因第一个seed
块中的setseed
完全是这样的,在附件中,showsetseed
和printseed
块流畅。 (否则,set.seed
不会返回一个数字,所以它看起来很奇怪。)
BTW:第二个例子使用了ref.label
,Yihui将here作为块重用的更通用的方法。
BTW#2:当我说&#34;存储随机状态&#34;时,这不完全正确...我存储了一个随机生成的种子。当然,随机状态本身比单个整数大得多。我不想激怒PRNG众神: - )