Воспроизводимое saveRDS со средами - PullRequest
0 голосов
/ 05 февраля 2019

Я собираю пакет 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')) )

1 Ответ

0 голосов
/ 05 февраля 2019

очень интересный вопрос.Есть странное поведение:

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

Мой вывод ЛОЖЬ в первом идентичном, но ИСТИНА во втором.Я не знаю точно, почему.Также я использую save.image вместо save, поэтому я не знаю, подходит ли вам это!Лучший!

...