可重现的 saveRDS 环境

标签 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')) )

最佳答案

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

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

关于可重现的 saveRDS 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54530493/

相关文章:

c++ - 从 R 中的一组观察结果创建频率 vector 的矢量化方法?

r - 在顶层 : 'README.Rmd' persists even after implementing suggested solutions 发现非标准文件/目录

build - 如何存储 CMake build设置

c# - 如何在重建 C# 应用程序时始终生成逐字节相同的 .exe?

r - 使用带有 dplyr 管道语法的 base 中的 table() 函数?

r - 基于具有附加条件的其他列,在 R 中创建新列

r - 使用ggplot2 barplot在R中构建二进制迷你图

r - 压缩 R 包中的共享库

c++ - rcpp包创建符号找不到错误

c# - 为什么 C# 为相同的源代码生成不同的 EXE?