Vad är filformatet RDATA?
.rdata (skrivs även .RData) är det infödda arbetsyteformatet som används av R:s miljö för statistiska beräkningar för att spara och återställa flera objekt i minnet samtidigt. Genom att anropa save() eller save.image() i R serialiseras valfritt antal namngivna objekt - vektorer, data frames, listor, funktioner och miljöer - till en enda binär fil, som load() sedan återställer direkt till den anropande miljön under deras ursprungliga namn.
Filen är byggd på R:s interna serialiseringsprotokoll. Okomprimerade filer börjar med ASCII-headern RDX3 (eller den äldre RDX2) följt av en XDR-kodad binär nyttolast. I praktiken komprimerar R nyttolasten med gzip som standard, så de flesta .rdata-filer börjar med gzip-magiska bytes 1F 8B snarare än den råa serialiseringsheadern. Bzip2- och xz-komprimering stöds också.
Två versioner av serialiseringsformatet används vanligtvis:
- Version 2 - standard före R 3.5.0; allmänt kompatibel med äldre R-installationer.
- Version 3 - standard sedan R 3.5.0; lägger till infödd metadata för teckenkodning och kan inte läsas av tidigare R-versioner.
Det nära besläktade .rds-formatet skiljer sig på en viktig punkt: det lagrar ett enskilt R-objekt snarare än en namngiven samling, och laddas med readRDS() så att användaren kan tilldela det valfritt namn. För att dela data portabelt utanför R föredras ofta textbaserade format som CSV eller JSON.
Säkerhet & trygghet
RISK: MEDIUM.RData-filer är data, men att ladda en är inte helt passivt: en .RData kan innehålla R-objekt som funktioner, formler eller löften, och att återställa en skadlig arbetsyta kan i vissa fall utlösa kodexekvering (och load() skriver tyst över objekt med samma namn i din miljö). Ladda endast .RData-filer från källor du litar på, på samma sätt som du skulle hantera filer som innehåller körbar kod. Filer är inte krypterade, så förutsätt inte integritet. I övrigt finns ingen risk för skadlig kod i vanliga dataset.
Formatdetaljer
i ett nötskalsave() börjar med ASCII-raden „RDX3\n” (äldre filer „RDX2\n”), följt av en XDR-kodad serialiserad nyttolast. Om den sparas gzip-komprimerad (standard), börjar filen istället med gzip-magiska 1F 8B; bzip2 börjar med „BZh”, xz börjar med „FD 37 7A 58 5A”. Okomprimerade nyttolaster bär serialiseringsmarkören „X\n” (58 0A). Det finns alltså ingen enskild fast signatur vid offset-0 för alla .RData-filer.Program som öppnar RDATA-filer
load('sökväg/till/fil.RData') för att återställa objekten; ls() för att se vad som laddades. load('file.RData'); inspektera objekten i miljöpanelen. load('file.RData'); inspektera objekten i miljöpanelen. load('file.RData'); inspektera objekten i miljöpanelen. load() den i den webbläsarbaserade RStudio - ingen lokal installation krävs. Tekniska detaljer
djup specifikation| Formattyp | Binärt serialiserade R-objekt; ett ASCII-serialiseringsläge finns också |
| Byteordning | Big-endian (XDR-nätverksbyteordning) |
| Standardkomprimering | gzip; bzip2 och xz är valfria alternativ; okomprimerat läge är tillgängligt |
| Magiska bytes (okomprimerad v3) | 52 44 58 33 0A (ASCII „RDX3\n”); v2-filer använder 52 44 58 32 0A („RDX2\n”) |
| Magiska bytes (komprimerad) | 1F 8B vid gzip-komprimering (standard); 42 5A 68 för bzip2; FD 37 7A 58 5A för xz |
| Objektmultiplicitet | Lagrar flera namngivna R-objekt per fil (vektorer, data frames, listor, funktioner, miljöer) |
| Laddningskommando | `load()` - återställer alla sparade objekt till den anropande miljön under deras ursprungliga namn |
| Spara-kommandon | `save()` för valda objekt; `save.image()` för att fånga hela den nuvarande arbetsytan |
| Serialiseringsversioner | v2 (före R 3.5.0) och v3 (R ≥ 3.5.0); v3 bäddar in infödd metadata för teckenkodning; v3-filer kräver R 3.5.0 eller senare |
| MIME-typ | application/octet-stream (generisk); inofficiell: application/x-r-data |
| Kryptering | Ingen inbyggd; känsliga arbetsytor måste skyddas på operativsystem- eller containernivå |
| Integritetskontroll | Ingen inneboende kontrollsumma; komprimeringsomslaget kan upptäcka bitröta, men det finns ingen hash per objekt |
| Plattformsstöd | Plattformsoberoende: Windows, macOS, Linux - alla system som kör R |
| Typisk filstorlek | Från några KB till flera GB, beroende på storleken och antalet sparade objekt |
| Syskonformat för enstaka objekt | `.rds` lagrar exakt ett R-objekt; laddas med `readRDS()` och kan fritt namnges vid tilldelning |
| Databas för lazy-load i paket | `.rdx` (index) och `.rdb` (data) filer bildar tillsammans den lazy-load-databas som används i R-paket och delar samma serialiseringslager |
| Släppt | 1990s (with R; serialization format predates R 1.0, 2000) |
| Senaste version | R serialization format version 3 (default since R 3.5.0, 2018) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | cran.r-project.org |
RDATA-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om RDATA-filer.
Vanliga frågor
Hur öppnar jag en RData-fil?
load('sökväg/till/fil.RData'). Det återställer alla sparade objekt i din session under deras ursprungliga namn - kör ls() för att se dem. RData är binärt, så en textredigerare visar inte läsbart innehåll.Vad är skillnaden mellan .RData och .rds?
Hur konverterar jag RData till CSV?
load('file.RData'), använd sedan write.csv(dinDataFrame, 'ut.csv') för varje data frame du vill exportera.Kan jag öppna en RData-fil utan R?
pyreadr kan läsa många .RData-filer, men R är den pålitliga vägen, för att sedan exportera till CSV/Excel för andra verktyg.Varför laddas inte min RData-fil i R?
Är det säkert att öppna en RData-fil från någon annan?
load() kan skriva över dina objekt, så öppna endast filer från källor du litar på - hantera okända .RData som vilken fil som helst som kan köra kod.