代码之家  ›  专栏  ›  技术社区  ›  989

为什么“load()”函数后会出现相同的随机状态

  •  3
  • 989  · 技术社区  · 8 年前

    加载my后 .RData 我注意到,每次加载工作区后,随机生成器都会给出相同的数字。

    这就是我的意思

    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() .

    拯救图像() 是否也保存随机状态?

    2 回复  |  直到 8 年前
        1
  •  4
  •   duckmayr    8 年前

    确实保存。image()是否也保存随机状态?

    是,通过保存隐藏对象 .Random.seed ; 看见 this discussion 在R-help邮件列表中。

    编辑:

    根据建议 Gregor ,我在邮件列表讨论中添加了要使用的建议 save(list = ls()) 而不是 save.image() ; 它会将所有非隐藏对象保存在全局环境中,这通常是您想要从中执行的操作 拯救图像() 无论如何

        2
  •  0
  •   Community Mohan Dere    6 年前

    set.seed(NULL) 重新初始化随机数生成器。所以

    load(".../file.RData")
    set.seed(NULL)
    

    可以解决此问题。


    至于 save save.image() , ?save 声明:

    拯救图像() 只是保存当前工作区的捷径,即。,

    save(list = ls(all.names = TRUE), file = ".RData", envir = .GlobalEnv)