将我的.RData
文件从光盘加载到R后,我注意到随机生成器在加载工作区后每次都给出相同的数字。
这就是我的意思
load(".../file.RData")
sample(10)
#[1] 9 6 1 7 5 2 8 4 10 3
load(".../file.RData")
sample(10)
#[1] 9 6 1 7 5 2 8 4 10 3
你知道为什么会这样吗?我不记得我使用哪个功能来保存工作区,但我觉得使用save()
或save.image()
的问题。
save.image()
是否也会保存随机状态?
答案 0 :(得分:4)
save.image()也会保存随机状态吗?
是的,保存隐藏的对象.Random.seed
;请参阅R-help邮件列表中的this discussion。
编辑:
根据Gregor的建议,我在该邮件列表讨论中添加建议,使用save(list = ls())
代替save.image()
;它会保存您全局环境中的所有非隐藏对象,这通常是您希望从save.image()
完成的操作。
答案 1 :(得分:0)
set.seed(NULL)
会重新初始化随机数生成器。所以,
load(".../file.RData")
set.seed(NULL)
可以解决这个问题。
至于save
和save.image()
之间的差异,?save
表示
save.image()
只是“保存我当前的工作空间”的捷径,即
save(list = ls(all.names = TRUE), file = ".RData", envir = .GlobalEnv)