我正在构建一个 R 包并使用 data-raw
和 data
存储预定义的库 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/