RDATA ファイル形式とは?
.rdata(.RData とも表記されます)は、R統計計算環境で使用されるネイティブのワークスペース形式で、メモリ内の複数のオブジェクトを一度に保存および復元するために使用されます。Rで save() または save.image() を呼び出すと、ベクトル、データフレーム、リスト、関数、環境など、任意の数の名前付きオブジェクトが単一のバイナリファイルにシリアル化されます。これを load() すると、元の名前のまま呼び出し元の環境に直接復元されます。
このファイルはRの内部シリアル化プロトコルに基づいています。非圧縮ファイルはASCIIヘッダー RDX3(または古い RDX2)で始まり、その後にXDRエンコードされたバイナリペイロードが続きます。実際には、Rはデフォルトでペイロードを gzip で圧縮するため、ほとんどの .rdata ファイルは生のシリアル化ヘッダーではなく、gzip のマジックバイト 1F 8B で始まります。Bzip2 および xz 圧縮もサポートされています。
主に2つのシリアル化形式バージョンが使用されています:
- バージョン 2 - R 3.5.0 より前のデフォルト。古いRのインストール環境と広く互換性があります。
- バージョン 3 - R 3.5.0 以降のデフォルト。ネイティブの文字エンコーディングメタデータが追加されており、以前のRリリースでは読み取ることができません。
密接に関連する .rds 形式とは、1つの重要な点で異なります。それは、名前付きコレクションではなく単一のRオブジェクトを保存し、readRDS() でロードされるため、呼び出し側が任意の名前を割り当てることができる点です。R以外の場所でポータブルにデータを共有する場合は、CSV や JSON などのテキストベースの形式が好まれることがよくあります。
セキュリティと安全性
リスク: MEDIUM.RData ファイルはデータですが、ロード作業は完全に受動的ではありません。.RData には関数、数式、プロミスなどのRオブジェクトが含まれることがあり、悪意のあるワークスペースを復元すると、場合によってはコードが実行される可能性があります(また、load() は環境内の同名のオブジェクトを黙って上書きします)。実行可能ファイルを含む可能性のある他のファイルと同様に、信頼できるソースからの .RData ファイルのみをロードしてください。ファイルは暗号化されていないため、プライバシーが保護されているとは考えないでください。それ以外の場合、通常のデータセットにマルウェアのリスクはありません。
形式の詳細
概要save() で保存された典型的な .RData は、ASCII行 «RDX3\n»(古いファイルは «RDX2\n»)で始まり、その後にXDRエンコードされたシリアル化ペイロードが続きます。gzip圧縮(デフォルト)で保存された場合、ファイルは代わりに gzip のマジックバイト 1F 8B で始まります。bzip2は «BZh»、xzは «FD 37 7A 58 5A» で始まります。非圧縮ペイロードにはシリアル化マーカー «X\n» (58 0A) が含まれます。したがって、すべての .RData ファイルに共通するオフセット0の固定シグネチャは存在しません。RDATA ファイルを開くプログラム
load('file.RData') を実行します。環境(Environment)ペインでオブジェクトを確認できます。 load('file.RData') を実行します。環境(Environment)ペインでオブジェクトを確認できます。 load('file.RData') を実行します。環境(Environment)ペインでオブジェクトを確認できます。 load() します。ローカルへのインストールは不要です。 技術的詳細
詳細仕様| 形式タイプ | バイナリシリアル化されたRオブジェクト(ASCIIシリアル化モードも存在) |
| バイト順序 | ビッグエンディアン(XDRネットワークバイト順序) |
| デフォルトの圧縮 | gzip。bzip2 および xz もオプションとして選択可能。非圧縮モードも利用可能 |
| マジックバイト (非圧縮 v3) | 52 44 58 33 0A (ASCII «RDX3\n»)。v2ファイルは 52 44 58 32 0A («RDX2\n») を使用 |
| マジックバイト (圧縮済み) | gzip圧縮時(デフォルト)は 1F 8B。bzip2は 42 5A 68。xzは FD 37 7A 58 5A |
| オブジェクトの多重性 | 1ファイルに複数の名前付きRオブジェクト(ベクトル、データフレーム、リスト、関数、環境)を保存可能 |
| ロードコマンド | `load()` - 保存されたすべてのオブジェクトを元の名前で呼び出し元の環境に復元 |
| 保存コマンド | 特定のオブジェクトには `save()`、現在のワークスペース全体を保存するには `save.image()` |
| シリアル化バージョン | v2 (R 3.5.0 未満) および v3 (R 3.5.0 以上)。v3はネイティブ文字エンコーディングメタデータを埋め込み、R 3.5.0 以降が必要 |
| MIMEタイプ | application/octet-stream (汎用); 非公式: application/x-r-data |
| 暗号化 | 組み込み機能なし。機密性の高いワークスペースはOSまたはコンテナレベルで保護する必要がある |
| 整合性チェック | 固有のチェックサムなし。圧縮ラッパーがビット劣化を検出する場合があるが、オブジェクトごとのハッシュはない |
| プラットフォームのサポート | クロスプラットフォーム: Windows, macOS, Linux - Rが動作するすべてのシステム |
| 典型的なファイルサイズ | 保存されるオブジェクトのサイズと数に応じて、数KBから数GBまで |
| 関連する単一オブジェクト形式 | `.rds` は正確に1つのRオブジェクトを保存し、`readRDS()` でロードされ、代入時に自由に名前を変更可能 |
| パッケージ遅延ロードデータベース | `.rdx`(インデックス)と `.rdb`(データ)ファイルが対になり、Rパッケージ内で使用される遅延ロードデータベースを構成し、同じシリアル化レイヤーを共有 |
| リリース日 | 1990s (with R; serialization format predates R 1.0, 2000) |
| 最新バージョン | R serialization format version 3 (default since R 3.5.0, 2018) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | cran.r-project.org |
RDATA の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。RDATA ファイルについて最初の質問をしてみましょう。
よくある質問
RDataファイルを開くにはどうすればよいですか?
load('path/to/file.RData') を実行して開きます。これにより、保存されているすべてのオブジェクトが元の名前でセッションに復元されます。ls() を実行して確認してください。RDataはバイナリ形式であるため、テキストエディタでは内容を読み取ることができません。.RData と .rds の違いは何ですか?
RDataをCSVに変換するにはどうすればよいですか?
load('file.RData') を実行した後、エクスポートしたい各データフレームに対して write.csv(yourDataFrame, 'out.csv') を実行してください。RなしでRDataファイルを開くことはできますか?
RDataファイルがRでロードできないのはなぜですか?
他人のRDataファイルを開いても安全ですか?
load() は既存のオブジェクトを上書きすることがあります。信頼できるソースからのファイルのみを開くようにしてください。未知の .RData は、コードを実行する可能性のある他のファイルと同様に注意して扱ってください。