【问题标题】:Defer code to END of document in knitr将代码推迟到 knitr 中文档的结尾
【发布时间】:2015-05-14 16:44:12
【问题描述】:

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

我希望将所有代码推送到“文档末尾”,同时只显示与我的文本交织在一起的结果。 echo='hold' 选项不这样做。

我的 Markdown 文件部分

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/ 的相关文档,但我不知道该怎么做。

【问题讨论】:

  • 我提供的解决方案能回答您的问题吗?习惯上“接受”带有绿色复选标记的答案。
  • 是的。谢谢。慢慢了解这里的风俗。
  • 谢谢!除了“感谢回复者”之外,它还为主题提供了一些结尾(或邀请对原始问题进行更多讨论和修改)。
  • 这个问题和这个one很相似。

标签: r knitr r-markdown


【解决方案1】:

我不认为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 文档中随机使用它:我在一开始就存储随机种子(无论是手动设置还是只存储当前随机状态以供以后复制)和将其显示在附件/附录中:

# 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 的原因仅仅是为了在附件中,showsetseedprintseed 块流动良好。 (否则,set.seed 不会返回数字,所以看起来会很奇怪。)

顺便说一句:第二个示例使用ref.label,Yihui 记录了here 作为更通用的块重用方法。

顺便说一句#2:当我说“存储随机状态”时,这并不完全正确......我正在存储一个随机生成的种子。当然,随机状态本身远大于单个整数。我不想激怒 PRNG 之神 :-)

【讨论】:

    猜你喜欢
    • 2014-11-14
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多