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块中明确"显示"的原因完全在于,在附件中,块showsetseed和printseed块流畅.(否则,set.seed不返回数字,所以它看起来很奇怪.)
顺便说一句:第二个例子使用ref.label,Yihui 在这里将其作为块重用的更通用方法.
BTW#2:当我说"存储随机状态"时,这并不完全正确......我正在存储一个随机生成的种子.当然,随机状态本身比单个整数大得多.我不想激怒PRNG众神:-)