具有环境的可重现saveRDS

时间:2019-02-05 08:40:24

标签: r r-package binary-reproducibility

我正在构建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')) )

1 个答案:

答案 0 :(得分:0)

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

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,所以我不知道它是否适合您! 最好!