Невозможно отобразить объекты ggplot2, созданные с помощью R 3.x, в R 4.x, импортированные из файла RDS

Я экспортировал список с некоторыми ggplot2 объекты в .RDSфайл, созданный из сеанса R 3.6.1. Затем попытался импортировать его в сеанс R 4.0.0 и получил следующую ошибку:

Error in identicalUnits(x) : 
  old version of unit class is no longer allowed

Я могу читать и импортировать эти графики в объект R, но НЕ МОГУ строить график. На самом деле у них есть все данные (данные, слои, отображение масштабов...), ноggplot2 не замышляет их.

Есть ли способ обойти это? Кто-нибудь из вас сталкивался с этой проблемой? Было быggplot2есть планы обновить библиотеку, чтобы мы могли импортировать графики старых версий? Надеюсь, вы поможете мне найти решение или хотя бы патч. Благодарность!

4 ответа

Я также столкнулся с этой проблемой и смог решить ее, изменив тему загруженного сюжета.

      g <- readRDS(my_plots_file_path)
g$theme <- ggplot2::theme_minimal()

Я думаю, это потому, что именно здесь все экземпляры unit переменные существовали в моем сюжете.

Сохранение объектов ggplot2 в .Rdsфайлы обычно не рекомендуется, потому что нет абсолютно никакой гарантии, что они все еще будут работать, если либо ggplot2, либо (в данном случае) R обновятся до следующего выпуска, даже если это второстепенный выпуск. Объекты ggplot2 содержат большое количество исполняемого кода (замыкания), а также внутренние структуры данных, и они обычно не синхронизируются всякий раз, когда мы генерируем график с одной версией ggplot2, а затем пытаемся распечатать с другой.

Еще одна проблема с сохранением объекта ggplot2 в .Rds заключается в том, что вся среда R также сохраняется, так что ваш .Rds файл может взорваться, если в ваш сеанс загружен большой объем данных.

Единственные два безопасных подхода к сохранению графиков в разных версиях: 1. сохранить исходные данные и код, который генерирует график, или 2. сохранить вывод графика как .png, .pdf, так далее.

У меня была та же проблема, что и после того, как я глобально установил настраиваемую тему. Я заметил, что если я переопределил тему с помощью 'complete = F', а затем установил новую тему, построение изображения будет работать нормально. К сожалению, лучшего решения пока нет. Это также произошло с объектами ggplot, которые были недавно закодированы, т. Е. Не прочитаны из файла.Rds.

Я новичок в R, и у меня была такая же проблема. Что сработало для меня, так это запуск сценариев графика в новой версии, а затем они рисуют нормально.

Другие вопросы по тегам