Отложить код до END документа в 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/, но я не могу понять, как это сделать.

Ответ 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 со случайностью: я храню случайное семя в самом начале (устанавливаю ли его вручную или просто сохраняю текущее случайное состояние для последующего воспроизведения) и отобразить его в приложении/приложении:

# 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. Причина, по которой я явно "показываю" seed в первом блоке setseed, заключается исключительно в том, что в приложении целые строки showsetseed и printseed хорошо текут. (В противном случае set.seed не возвращает число, поэтому он выглядел бы странным.)

BTW: этот второй пример использует ref.label, который Yihui документирует здесь как более общий подход к повторному использованию фрагментов.

BTW # 2: когда я сказал "хранить случайное состояние", это не совсем правильно... Я храню случайное генерируемое семя. Конечно, само случайное состояние намного больше, чем одно целое. Я не хочу гневаться на богов PRNG: -)