【问题标题】:Reproducible saveRDS with environments具有环境的可重现 saveRDS
【发布时间】:2019-02-05 08:40:24
【问题描述】:

我正在构建一个 R 包并使用 data-rawdata 来存储预定义的 RxODE 模型库。这很好用。

但是,生成的 .rda 文件在每一代都会更改。某些模型包含 R 环境,并且序列化似乎包含“创建时间”时间戳。这意味着每次重新生成data/ 目录时,所有文件都已更改...

是否有某种方法可以修改 R 环境的序列化以使其可重现?

storeFile <- function(file) {
  env <- new.env()
  fun <- function(x) {x+3}
  environment(fun) <- env

  save('fun', file = file, ascii=TRUE)
}

storeFile('fileA.rda')
storeFile('fileB.rda')
message("Files are identical? ", identical(readLines('fileA.rda'), readLines('fileB.rda')) )

【问题讨论】:

    标签: r r-package binary-reproducibility


    【解决方案1】:

    非常有趣的问题。有一个奇怪的行为:

    storeFile <- function(file) {
    
      env <- new.env()
      fun <- function(x) {x+3}
      environment(fun) <- env
    
      save.image(file = file, ascii=TRUE)
    }
    
    
    storeFile('fileA.rda')
    storeFile('fileB.rda')
    message("Files are identical? ", identical(readLines('fileA.rda'), readLines('fileB.rda')) )
    
    
    storeFile('fileA.rda')
    storeFile('fileB.rda')
    message("Files are identical? ", identical(readLines('fileA.rda'), readLines('fileB.rda')) )
    

    我的输出在第一个相同时为 FALSE,但在第二个中为 TRUE。我不清楚为什么。 另外我使用的是save.image而不是save,所以我不知道它是否适合你! 最好的!

    【讨论】:

      猜你喜欢
      • 2021-12-04
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 2021-03-05
      • 1970-01-01
      相关资源
      最近更新 更多