Qu'est-ce que le format de fichier RDS ?
Un fichier .rds est un fichier de sérialisation de données R produit par la fonction saveRDS() de R. Il stocke exactement un objet R - un data frame, une liste, un modèle, un vecteur ou toute autre structure R - dans le format binaire natif de sérialisation de R. Contrairement aux fichiers .RData créés par save(), qui restaurent des objets nommés directement dans l'environnement global, les fichiers .rds sont chargés avec readRDS() et renvoyés sous forme de valeur que l'appelant peut assigner à n'importe quel nom de variable.
Par défaut, les données sérialisées sont enveloppées dans une compression gzip, de sorte que la plupart des fichiers .rds s'ouvrent comme des flux gzip s'ils ne sont pas traités comme des objets R (octets magiques 1F 8B). La compression peut également être réglée sur bzip2, xz, ou désactivée entièrement avec saveRDS(obj, file, compress = FALSE).
R prend en charge deux versions de format de sérialisation : la version 2 (R 1.4-3.4, par défaut avant R 3.5.0) et la version 3 (par défaut depuis R 3.5.0, publiée en avril 2018), qui ajoute des métadonnées d'encodage explicites pour les chaînes de caractères - important pour le texte non-ASCII. La taille des fichiers varie de quelques kilo-octets pour les petits vecteurs à plusieurs gigaoctets pour les grands data frames ou les modèles complexes.
Les fichiers .rds sont l'unité standard de persistance des objets R : les analystes les utilisent pour mettre en cache des résultats intermédiaires, partager des objets de modèles entraînés et stocker des données traitées entre les sessions. Pour les données colonnaires interopérables partagées entre différents outils, des formats tels que .parquet sont de plus en plus privilégiés ; le .rds reste le choix de prédilection lorsque le consommateur est systématiquement R.
Sécurité et sûreté
RISQUE : MEDIUMLes fichiers RDS peuvent intégrer du code R arbitraire via des fermetures (closures), des méthodes S4 ou des environnements de classe R5/R6. readRDS() évalue les promesses et les liaisons actives lors de l'accès. N'ouvrez pas de fichiers .rds provenant de sources non fiables dans R, car des objets malveillants pourraient exécuter du code pendant la désérialisation. L'équipe R Core a signalé ce risque dans la documentation.
Détails du format
en bref- Ray Dream Studio Scene File - Format d'animation 3D hérité des années 1990 par Ray Dream Inc. / MetaCreations (plus tard Carrara/DAZ) ; binaire avec la magie « RD » (0x33 0x44 0x43 0x20 en hex « 3DC ») ; le logiciel est abandonné, les fichiers sont illisibles par les outils modernes.
Programmes qui ouvrent les fichiers RDS
Détails techniques
spécifications approfondies| Encodage | Binaire (compressé en gzip par défaut) ; les variantes bzip2, xz ou non compressées sont également prises en charge |
| Objets stockés | Exactement un objet R par fichier - n'importe quel type SEXP : vecteur, liste, data.frame, modèle, référence d'environnement, etc. |
| Version du format de sérialisation | Version 2 (R 1.4-3.4) ou version 3 (R 3.5+, par défaut depuis 2018) ; numéro de version stocké dans l'en-tête du flux |
| Compression par défaut | gzip (compress=TRUE) ; alternatives : bzip2, xz, ou aucune (compress=FALSE) |
| Octets magiques | 1F 8B (en-tête gzip, compressé) ; 58 0A (XDR non compressé) ; 41 0A (ASCII non compressé) |
| Ordre des octets | Big-endian XDR (External Data Representation) pour le flux de sérialisation brut ; l'enveloppe de compression est indépendante de la plateforme |
| Portée de la sérialisation | Objet R unique (contrairement au .RData qui stocke un ou plusieurs objets nommés restaurés dans l'environnement appelant) |
| Métadonnées d'encodage des caractères | Le format de version 3 intègre des métadonnées d'encodage explicites pour les chaînes de caractères, permettant une gestion correcte du contenu non-ASCII |
| Taille de fichier typique | De quelques Ko (petits vecteurs) à plusieurs Go (grands data frames, modèles d'apprentissage automatique entraînés) |
| Fonctions de lecture/écriture | readRDS() renvoie l'objet sous forme de valeur ; saveRDS() l'écrit - l'appelant assigne n'importe quel nom de variable au chargement |
| Compatibilité plateforme | Multiplateforme ; Windows, Linux et macOS produisent des flux de sérialisation identiques |
| Vérification de la compression | Inspectez les octets magiques avec un éditeur hexadécimal ; ou utilisez les fonctions de connexion gzcon() / file() de R pour confirmer l'enveloppement gzip |
| Publié | 2001 (R 1.4.0, saveRDS/readRDS introduced) |
| Dernière version | Serialization format version 3 (R 3.5.0, 2018) |
| Standard ouvert | Oui · libre de droits |
| Spécification | stat.ethz.ch |
Conversions RDS
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers RDS.
Foire aux questions
Comment ouvrir un fichier RDS ?
mydata <- readRDS('file.rds'). Dans RStudio, cliquez sur le fichier dans le panneau « Files ». Pour Python : utilisez le package rpy2.Que contient un fichier RDS ?
Puis-je ouvrir un fichier RDS sans R ?
Quelle est la différence entre .rds et .RData/.rda ?
.rds stocke un seul objet non nommé (l'appelant assigne le nom au chargement). Le .RData/.rda stocke un ou plusieurs objets nommés qui sont chargés directement dans l'environnement R.Un fichier RDS est-il identique à un fichier Ray Dream 3D ?
Puis-je convertir un fichier RDS en CSV ?
write.csv(readRDS('file.rds'), 'out.csv') dans R. Pour les objets complexes, vous devez d'abord extraire manuellement les parties tabulaires.