Кажется, есть несоответствие между обработкой R команд random.seed()
+ sample()
в режиме вязального устройства и простым (построчным) режимами выполнения. Например, когда я запускаю код R ниже строки построчно (нажимая Control-Enter), я получаю один набор элементов выборки x
. Однако, когда я вяжу целые документы, я получаю другой набор элементов выборки, хотя начальное число устанавливается на то же число.
Я провел некоторое исследование по стековому потоку и в других местах, и единственное, что я нашел, что, по-видимому, имеет отношение к моему вопросу, это последний абзац следующей страницы на сайте И Хуэй. https://yihui.org/knitr/demo/cache/. После реализации предложения И Хуэй проблема остается (раскомментируйте вторую команду knitr::opts_chunk
в RMarkdown ниже).
Мой вопрос: как получить одинаковые элементы выборки независимо от режима выполнения?
---
title: "set.seed() in knitter mode"
author: "some author"
date: "1/27/2020"
output: html_document
---
```{r setup, include=FALSE}
library(knitr)
knitr::opts_chunk$set(echo = TRUE)
#knitr::opts_chunk$set(cache.extra = rand_seed) # Yi Hui's suggestion
```
## set.seed() in knitter mode.
```{r}
x=1:10
set.seed(234252)
sample(x,4)
# When running the above code manually, I get
# [1] 2 4 6 10
# When knitting the whole document, I get
# [1] 3 2 6 5
# How to get the same sampled elements of x regardless of the execution mode?
```
R version 3.6.2 (2019-12-12).
Platform: x86_64-apple-darwin15.6.0 (64-bit),
Running under: macOS Catalina 10.15.2.
Locale: en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
Attached base packages: stats graphics grDevices utils datasets methods base
Other attached packages: knitr_1.26
Loaded via a namespace (and not attached): compiler_3.6.2 magrittr_1.5 tools_3.6.2 htmltools_0.4.0 yaml_2.2.0 Rcpp_1.0.3 stringi_1.4.3 rmarkdown_2.0 stringr_1.4.0 xfun_0.11 digest_0.6.23 rlang_0.4.2 evaluate_0.14