Wat is het RDS-bestandsformaat?
Een .rds-bestand is een R Data Serialization-bestand geproduceerd door de saveRDS() functie van R. Het slaat precies één R-object op - een data frame, lijst, model, vector of elke andere R-structuur - in het eigen binaire serialisatieformaat van R. In tegenstelling tot .RData bestanden gemaakt met save(), die benoemde objecten rechtstreeks in de globale omgeving herstellen, worden .rds-bestanden geladen met readRDS() en geretourneerd als een waarde die de aanroeper aan elke gewenste variabelenaam kan toewijzen.
Standaard worden de geserialiseerde gegevens verpakt in gzip-compressie, waardoor de meeste .rds-bestanden openen als gzip-stromen als ze niet als R-objecten worden behandeld (magic bytes 1F 8B). Compressie kan ook worden ingesteld op bzip2, xz, of volledig worden uitgeschakeld met saveRDS(obj, file, compress = FALSE).
R ondersteunt twee versies van het serialisatieformaat: versie 2 (R 1.4-3.4, standaard vóór R 3.5.0) and versie 3 (standaard sinds R 3.5.0, uitgebracht in april 2018), die expliciete coderingsmetadata toevoegt voor tekenreeksen - belangrijk voor niet-ASCII tekst. Bestandsgroottes variëren van enkele kilobytes voor kleine vectoren tot verschillende gigabytes voor grote data frames of complexe modellen.
.rds-bestanden zijn de standaardeenheid voor persistentie van R-objecten: analisten gebruiken ze om tussenresultaten te cachen, getrainde modelobjecten te delen en verwerkte gegevens op te slaan tussen sessies. Voor interoperabele kolomgegevens die tussen verschillende tools worden gedeeld, wordt steeds vaker de voorkeur gegeven aan formaten zoals .parquet; .rds blijft de eerste keuze wanneer de consument altijd R is.
Beveiliging & veiligheid
RISICO: MEDIUMRDS-bestanden kunnen willekeurige R-code bevatten via closures, S4-methoden of R5/R6-klasse-omgevingen. readRDS() evalueert promises en actieve bindingen bij toegang. Open geen .rds-bestanden van niet-vertrouwde bronnen in R, aangezien kwaadwillig samengestelde objecten code kunnen uitvoeren tijdens deserialisatie. Het R Core Team heeft dit risico vermeld in de documentatie.
Formaatdetails
in een notendop- Ray Dream Studio Scene File - Verouderd 3D-animatieformaat uit de jaren 90 door Ray Dream Inc. / MetaCreations (later Carrara/DAZ); binair met magic 'RD ' (0x33 0x44 0x43 0x20 in hex '3DC '); software is verlaten, bestanden onleesbaar voor moderne tools.
Programma's die RDS-bestanden openen
.rds-bestand in het paneel „Files”, of voer readRDS() uit in de console. .rds-bestand in het paneel „Files”, of voer readRDS() uit in de console. .rds via het paneel „Files” of het commando readRDS(). import rpy2.robjects as ro; obj = ro.r'readRDS' - converteert RDS naar Python R-objecten. .rds, gebruik dan readRDS() in de console - geen lokale R-installatie nodig. Technische details
diepe specificaties| Codering | Binair (standaard gzip-gecomprimeerd); bzip2, xz of niet-gecomprimeerde varianten worden ook ondersteund |
| Opgeslagen objecten | Precies één R-object per bestand - elk SEXP-type: vector, lijst, data.frame, model, omgevingsreferentie, enz. |
| Versie serialisatieformaat | Versie 2 (R 1.4-3.4) of versie 3 (R 3.5+, standaard sinds 2018); versienummer opgeslagen in de stream-header |
| Standaard compressie | gzip (compress=TRUE); alternatieven: bzip2, xz, of geen (compress=FALSE) |
| Magic bytes | 1F 8B (gzip header, gecomprimeerd); 58 0A (XDR niet-gecomprimeerd); 41 0A (ASCII niet-gecomprimeerd) |
| Bytevolgorde | Big-endian XDR (External Data Representation) voor de ruwe serialisatiestroom; compressie-wrapper is platformonafhankelijk |
| Serialisatiebereik | Enkel R-object (in tegenstelling tot .RData, dat één of meer benoemde objecten opslaat die in de aanroepende omgeving worden hersteld) |
| Metadata voor tekencodering | Versie 3-formaat bevat expliciete coderingsmetadata voor tekenreeksen, wat een correcte verwerking van niet-ASCII-inhoud mogelijk maakt |
| Typische bestandsgrootte | Enkele KB (kleine vectoren) tot meerdere GB (grote data frames, getrainde machine-learning modellen) |
| Lees-/schrijffuncties | `readRDS()` retourneert het object als een waarde; `saveRDS()` schrijft het - de aanroeper wijst een variabelenaam toe bij het laden |
| Platformcompatibiliteit | Cross-platform; Windows, Linux en macOS produceren identieke serialisatiestromen |
| Compressieverificatie | Inspecteer magic bytes met een hex-editor; of gebruik R's `gzcon()` / `file()` verbindingsfuncties om gzip-verpakking te bevestigen |
| Uitgebracht | 2001 (R 1.4.0, saveRDS/readRDS introduced) |
| Laatste versie | Serialization format version 3 (R 3.5.0, 2018) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | stat.ethz.ch |
RDS conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over RDS-bestanden.
Veelgestelde vragen
Hoe open ik een RDS-bestand?
mydata <- readRDS('file.rds'). In RStudio: klik op het bestand in het paneel „Files”. Voor Python: gebruik het pakket rpy2.Wat bevat een RDS-bestand?
Kan ik een RDS-bestand openen zonder R?
rpy2. Er is geen zelfstandige viewer. Als het tabelgegevens zijn, vraag de maker dan om ook een CSV of Parquet te verstrekken.Wat is het verschil tussen .rds en .RData/.rda?
.rds slaat één naamloos object op (de aanroeper wijst de naam toe bij het laden). .RData/.rda slaat één of meer benoemde objecten op die rechtstreeks in de R-omgeving worden geladen.Is een RDS-bestand hetzelfde als een Ray Dream 3D-bestand?
.rds, maar die software is allang verlaten. Tegenwoordig zijn vrijwel alle .rds-bestanden die u tegenkomt serialisatiebestanden van de taal R.Kan ik een RDS-bestand converteren naar CSV?
write.csv(readRDS('file.rds'), 'out.csv') in R. Voor complexe objecten moet u eerst handmatig de tabelvormige delen extraheren.