Воспроизводимый saveRDS со средами

Я создаю пакет 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')) )

person parasietje    schedule 05.02.2019    source источник


Ответы (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, так что не знаю подойдет ли он вам! Лучший!

person LocoGris    schedule 05.02.2019