Почему данные в моем пакете «сериализованы» и не читаются в самой последней версии R? - PullRequest
0 голосов
/ 05 августа 2020

Я написал небольшой пакет, который полезен для обмена функциями и примерами данных с коллегами, и недавно я добавил в него еще несколько файлов данных. Компьютер, который я использовал, когда это делал, работал под управлением R версии 4.0.0. Однако, когда я попытался использовать devtools для установки этого пакета из github на компьютер с R версии 4.0.2, я получил следующее сообщение:

NB: this package now depends on R (>= 3.5.0)

WARNING: Added dependency on R >= 3.5.0 because serialized objects in serialize/load version 3 cannot be read in older versions of R. File(s) containing such objects: 'LaurasHelpers/data/Candidates.RData'

Я не знаю, что значит сериализация моих данных. Я не изменил способ сохранения вещей. Вот как я сохранил data.frame под названием «MyData» в папке «data» моего пакета:

 save(MyData, "MyData.RData")

Увидев первоначальный ответ на свой пост, я попробовал

 save(MyData, "MyData.RData", version = 2)

Затем я обновил все:

 devtools::document()
 devtools::build()

С git bash, я отправил свои изменения в репозиторий github. Затем, вернувшись в RStudio, я сделал:

 remove.packages("LaurasHelpers")
 devtools::install_github(repo = "shirewoman2/LaurasHelpers")

Но когда я загружаю свой пакет, я все еще не могу загрузить определенные файлы данных в свое рабочее пространство, используя data(MyData).

Два вопроса :

  1. Почему файлы данных, которые я сохранил с помощью R 4.0.0, не могут быть загружены в R 4.0.2? Оба они более свежие, чем R 3.5.0.
  2. Как мне избежать этой проблемы, чтобы любой, кто загружает мой пакет, мог открыть мой довольно простой набор данных?

1 Ответ

1 голос
/ 05 августа 2020

Предупреждение не означает / не сообщает вам, что вы не можете загружать файлы, сохраненные в 4.0.0 в 4.0.2. Скорее, он предупреждает вас, что другие пользователи, использующие R <3.5.0, не смогут загрузить ваши сохраненные файлы. </p>

Когда вы сохраняете свои данные, используйте

save(MyObject, file = "MyObject.RData", version = 2)

для поддержки back-

Из файла новостей R 3.x в версии 3.6.0:

Формат сериализации версии 3 становится по умолчанию для сериализация и сохранение рабочей области (save (), serialize (), saveRDS (), compiler :: cmpfile ()). Сериализованные данные в формате 3 не могут быть прочитаны версиями R до версии 3.5.0. Формат сериализации версии 2 по-прежнему поддерживается и может быть выбран с помощью версии 2 в функциях сохранения / сериализации. Значение по умолчанию можно изменить обратно для всего сеанса R, установив для переменных среды R_DEFAULT_SAVE_VERSION и R_DEFAULT_SERIALIZE_VERSION значение 2. Для максимальной обратной совместимости файлы vignette.rds и partial.rdb, созданные сборкой R CMD, имеют формат сериализации версии 2. , а повторное сохранение по умолчанию создает файлы в формате сериализации версии 2 (если оригинал уже не имеет формат версии 3).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...