可重复使用环境的saveRDS

par*_*tje 5 r binary-reproducibility r-package

我正在构建一个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')) )
Run Code Online (Sandbox Code Playgroud)

Loc*_*ris 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')) )
Run Code Online (Sandbox Code Playgroud)

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