Co to jest format pliku RDATA?
.rdata (zapisywany również jako .RData) to natywny format obszaru roboczego używany przez środowisko obliczeń statystycznych R do zapisywania i przywracania wielu obiektów znajdujących się w pamięci jednocześnie. Wywołanie save() lub save.image() w R serializuje dowolną liczbę nazwanych obiektów - wektorów, ramek danych (data frames), list, funkcji i środowisk - do pojedynczego pliku binarnego, który load() następnie przywraca bezpośrednio do środowiska wywołującego pod ich oryginalnymi nazwami.
Plik opiera się na wewnętrznym protokole serializacji R. Nieskompresowane pliki zaczynają się od nagłówka ASCII RDX3 (lub starszego RDX2), po którym następuje binarny ładunek zakodowany w formacie XDR. W praktyce R domyślnie kompresuje ładunek za pomocą gzip, więc większość plików .rdata zaczyna się od bajtów magicznych gzip 1F 8B, a nie od surowego nagłówka serializacji. Obsługiwane są również kompresje bzip2 oraz xz.
W powszechnym użyciu są dwie wersje formatu serializacji:
- Wersja 2 - domyślna przed R 3.5.0; szeroko kompatybilna ze starszymi instalacjami R.
- Wersja 3 - domyślna od R 3.5.0; dodaje natywne metadane kodowania znaków i nie może być odczytywana przez wcześniejsze wersje R.
Blisko powiązany format .rds różni się jednym kluczowym aspektem: przechowuje pojedynczy obiekt R zamiast nazwanej kolekcji i jest ładowany za pomocą readRDS(), dzięki czemu wywołujący może przypisać mu dowolną nazwę. Do przenośnego udostępniania danych poza R często preferowane są formaty tekstowe, takie jak CSV lub JSON.
Bezpieczeństwo
RYZYKO: MEDIUMPliki .RData to dane, ale ich ładowanie nie jest całkowicie pasywne: plik .RData może zawierać obiekty R, takie jak funkcje, formuły lub obietnice (promises), a przywrócenie złośliwego obszaru roboczego może w niektórych przypadkach wywołać wykonanie kodu (a load() po cichu nadpisuje obiekty o tej samej nazwie w Twoim środowisku). Ładuj pliki .RData tylko z zaufanych źródeł, traktując je tak samo, jak każdy plik mogący zawierać kod wykonywalny. Pliki nie są szyfrowane, więc nie należy zakładać prywatności danych. Poza tym, w zwykłych zestawach danych nie ma ryzyka złośliwego oprogramowania.
Szczegóły formatu
w pigułcesave() zaczyna się od linii ASCII „RDX3\n” (starsze pliki „RDX2\n”), po której następuje zserializowany ładunek zakodowany w XDR. Jeśli plik został zapisany z kompresją gzip (domyślnie), zaczyna się on od bajtów magicznych gzip 1F 8B; bzip2 zaczyna się od „BZh”, xz od „FD 37 7A 58 5A”. Nieskompresowane ładunki zawierają znacznik serializacji „X\n” (58 0A). Zatem nie ma jednej stałej sygnatury na przesunięciu 0 dla wszystkich plików .RData.Programy otwierające pliki RDATA
load('sciezka/do/pliku.RData'), aby przywrócić obiekty; użyj ls(), aby zobaczyć, co zostało załadowane. load('file.RData'); sprawdź obiekty w panelu Environment. load('file.RData'); sprawdź obiekty w panelu Environment. load('file.RData'); sprawdź obiekty w panelu Environment. load() w przeglądarkowej wersji RStudio - bez instalacji lokalnej. Szczegóły techniczne
specyfikacja| Typ formatu | Binarne zserializowane obiekty R; istnieje również tryb serializacji ASCII |
| Kolejność bajtów | Big-endian (sieciowa kolejność bajtów XDR) |
| Domyślna kompresja | gzip; bzip2 i xz są opcjonalnymi alternatywami; dostępny jest tryb bez kompresji |
| Bajty magiczne (nieskompresowane v3) | 52 44 58 33 0A (ASCII „RDX3\n”); pliki v2 używają 52 44 58 32 0A („RDX2\n”) |
| Bajty magiczne (skompresowane) | 1F 8B przy kompresji gzip (domyślna); 42 5A 68 dla bzip2; FD 37 7A 58 5A dla xz |
| Krotność obiektów | Przechowuje wiele nazwanych obiektów R w jednym pliku (wektory, ramki danych, listy, funkcje, środowiska) |
| Polecenie ładowania | `load()` - przywraca wszystkie zapisane obiekty do środowiska wywołującego pod ich oryginalnymi nazwami |
| Polecenia zapisu | `save()` dla wybranych obiektów; `save.image()` do przechwycenia całego bieżącego obszaru roboczego |
| Wersje serializacji | v2 (przed R 3.5.0) i v3 (R ≥ 3.5.0); v3 osadza natywne metadane kodowania znaków; pliki v3 wymagają R 3.5.0 lub nowszego |
| Typ MIME | application/octet-stream (ogólny); nieoficjalny: application/x-r-data |
| Szyfrowanie | Brak wbudowanego; wrażliwe obszary robocze muszą być chronione na poziomie systemu operacyjnego lub kontenera |
| Sprawdzanie integralności | Brak wewnętrznej sumy kontrolnej; warstwa kompresji może wykryć błędy bitowe, ale nie ma skrótu (hash) dla poszczególnych obiektów |
| Obsługa platform | Wieloplatformowy: Windows, macOS, Linux - dowolny system z zainstalowanym R |
| Typowy rozmiar pliku | Od kilku KB do wielu GB, zależnie od rozmiaru i liczby zapisanych obiektów |
| Pokrewny format jednoobiektowy | `.rds` przechowuje dokładnie jeden obiekt R; ładowany za pomocą `readRDS()` i dowolnie nazywany przy przypisaniu |
| Baza danych leniwego ładowania pakietu | Pliki `.rdx` (indeks) i `.rdb` (dane) tworzą razem bazę danych leniwego ładowania używaną wewnątrz pakietów R, współdzieląc tę samą warstwę serializacji |
| Wydano | 1990s (with R; serialization format predates R 1.0, 2000) |
| Najnowsza wersja | R serialization format version 3 (default since R 3.5.0, 2018) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | cran.r-project.org |
Konwersje RDATA
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki RDATA.
Najczęściej zadawane pytania
Jak otworzyć plik RData?
load('sciezka/do/pliku.RData'). Spowoduje to przywrócenie wszystkich zapisanych obiektów do sesji pod ich oryginalnymi nazwami - uruchom ls(), aby je zobaczyć. RData to format binarny, więc edytor tekstu nie wyświetli czytelnej zawartości.Jaka jest różnica między .RData a .rds?
Jak przekonwertować RData na CSV?
load('file.RData'), a następnie write.csv(twojaRamkaDanych, 'out.csv') dla każdej ramki danych, którą chcesz wyeksportować.Czy mogę otworzyć plik RData bez R?
Dlaczego mój plik RData nie ładuje się w R?
Czy otwieranie pliku RData od kogoś innego jest bezpieczne?
load() może nadpisać Twoje obiekty, więc otwieraj tylko pliki z zaufanych źródeł - traktuj nieznane pliki .RData jak każdy plik, który może uruchamiać kod.