我正在设计一个实验,我将使用set.seed()
初始设置种子并执行许多加载所需库的函数。我打算在具有不同种子值的多台机器上运行相同的代码。
在进行一些初步测试时,我很惊讶我无法在同一个会话中重现结果(当然我当时没有意识到会话是罪魁祸首)。在尝试各种调试后,我终于发现在R中加载某些库会修改.Random.seed
,例如在新会话中执行以下代码
set.seed(123)
sample(1000, 3)
set.seed(123)
require("caret")
sample(1000, 3)
set.seed(123)
require("caret")
sample(1000, 3)
sample
声明的结果是
288 788 409
409 883 939
288 788 409
我期待第二个和第三个sample
语句生成相同的序列。
有没有办法强制在R中加载库,这样我可以重现结果而不记得每次重启会话?文档中的任何地方都提到caret
在加载种子时修改种子?