Невозможно отобразить объекты 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, и у меня была такая же проблема. Что сработало для меня, так это запуск сценариев графика в новой версии, а затем они рисуют нормально.