我正在尝试在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
edit :我在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
块。我在第一个setseed
块中明确"显示" seed
的原因完全是这样,因此,在附件中,showsetseed
和printseed
块质量很好。(否则,set.seed
不会返回一个数字,所以它看起来很糟糕。)
btw:第二个示例使用ref.label
,Yihui在这里将其作为更通用的块重用方法。
btw#2:当我说"存储随机状态"时,那不是完全正确的...我正在存储一个随机生成的种子。当然,随机状态本身比单个整数大得多。我不想生气: - )