Что такое формат файла RDS?
Файл .rds - это файл сериализации данных R, созданный функцией saveRDS(). Он хранит ровно один объект R - фрейм данных, список, модель, вектор или любую другую структуру R - в собственном бинарном формате сериализации R. В отличие от файлов .RData, созданных с помощью save(), которые восстанавливают именованные объекты непосредственно в глобальную среду, файлы .rds загружаются с помощью readRDS() и возвращаются как значение, которое вызывающая сторона может присвоить любому имени переменной.
По умолчанию сериализованные данные упакованы с использованием сжатия gzip, поэтому большинство файлов .rds открываются как потоки gzip, если они не обрабатываются как объекты R (магические байты 1F 8B). Сжатие также может быть установлено на bzip2, xz или полностью отключено с помощью saveRDS(obj, file, compress = FALSE).
R поддерживает две версии формата сериализации: версию 2 (R 1.4-3.4, по умолчанию до R 3.5.0) и версию 3 (по умолчанию с R 3.5.0, выпущена в апреле 2018 года), которая добавляет явные метаданные кодировки для символьных строк - это важно для текста в кодировках, отличных от ASCII. Размер файлов варьируется от нескольких килобайт для небольших векторов до нескольких гигабайт для больших фреймов данных или сложных моделей.
Файлы .rds являются стандартной единицей хранения объектов R: аналитики используют их для кэширования промежуточных результатов, обмена обученными моделями и хранения обработанных данных между сессиями. Для переносимых колоночных данных, используемых в различных инструментах, все чаще предпочитаются такие форматы, как .parquet; однако .rds остается основным выбором, когда потребителем данных всегда является R.
Безопасность и защита
РИСК: MEDIUMФайлы RDS могут содержать произвольный код R через замыкания, методы S4 или среды классов R5/R6. readRDS() вычисляет обещания (promises) и активные привязки при доступе. Не открывайте файлы .rds из ненадежных источников в R, так как вредоносные объекты могут выполнить код во время десериализации. Команда разработчиков R Core отметила этот риск в документации.
Детали формата
в двух словах- Ray Dream Studio Scene File - Устаревший формат 3D-анимации 1990-х годов от Ray Dream Inc. / MetaCreations (позже Carrara/DAZ); бинарный с магической меткой «RD » (0x33 0x44 0x43 0x20 в hex «3DC »); программное обеспечение заброшено, файлы не читаются современными инструментами.
Программы, открывающие файлы RDS
Технические подробности
глубокая спецификация| Кодировка | Бинарная (по умолчанию сжатая gzip); также поддерживаются варианты bzip2, xz или несжатые |
| Хранимые объекты | Ровно один объект R на файл - любой тип SEXP: вектор, список, data.frame, модель, ссылка на окружение и т. д. |
| Версия формата сериализации | Версия 2 (R 1.4-3.4) или версия 3 (R 3.5+, по умолчанию с 2018 года); номер версии хранится в заголовке потока |
| Сжатие по умолчанию | gzip (compress=TRUE); альтернативы: bzip2, xz или отсутствует (compress=FALSE) |
| Магические байты | 1F 8B (заголовок gzip, сжатый); 58 0A (XDR несжатый); 41 0A (ASCII несжатый) |
| Порядок байтов | Big-endian XDR (External Data Representation) для необработанного потока сериализации; оболочка сжатия не зависит от платформы |
| Область сериализации | Одиночный объект R (в отличие от .RData, который хранит один или несколько именованных объектов, восстанавливаемых в вызывающую среду) |
| Метаданные кодировки символов | Формат версии 3 внедряет явные метаданные кодировки для символьных строк, обеспечивая корректную обработку контента не в ASCII |
| Типичный размер файла | От нескольких КБ (малые векторы) до нескольких ГБ (большие фреймы данных, обученные модели машинного обучения) |
| Функции чтения/записи | readRDS() возвращает объект как значение; saveRDS() записывает его - вызывающая сторона присваивает любое имя переменной при загрузке |
| Совместимость платформ | Кроссплатформенный; Windows, Linux и macOS создают идентичные потоки сериализации |
| Проверка сжатия | Осмотрите магические байты с помощью шестнадцатеричного редактора или используйте функции подключения R gzcon() / file(), чтобы подтвердить упаковку gzip |
| Выпущен | 2001 (R 1.4.0, saveRDS/readRDS introduced) |
| Последняя версия | Serialization format version 3 (R 3.5.0, 2018) |
| Открыть стандартное | Да · без роялти |
| Спецификация | stat.ethz.ch |
Конвертации RDS
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах RDS.
Часто задаваемые вопросы
Как открыть файл RDS?
mydata <- readRDS('file.rds'). В RStudio: щелкните файл на панели Files. Для Python: используйте пакет rpy2.Что содержит файл RDS?
Можно ли открыть файл RDS без R?
В чем разница между .rds и .RData/.rda?
.rds хранит один неименованный объект (имя присваивается пользователем при загрузке). .RData/.rda хранит один или несколько именованных объектов, которые загружаются непосредственно в среду R.Является ли файл RDS тем же самым, что и файл Ray Dream 3D?
.rds, но эта программа давно заброшена. Сегодня практически все файлы .rds, с которыми вы столкнетесь, - это файлы сериализации языка R.Можно ли конвертировать файл RDS в CSV?
write.csv(readRDS('file.rds'), 'out.csv') в R. Для сложных объектов сначала нужно вручную извлечь табличные части.