簡體   English   中英

.rds 文件內部格式

[英].rds file internal format

由於設備(我們稱之為第 1 卷)被填滿,我丟失了一個 .rds 文件。 通常,當發生這種情況時,R 會拋出錯誤並停止。 在那種情況下,我在不同的卷(卷 2)上有一個安全的副本。 然而,這一次,R 將在第 1 卷上寫入文件而不會出錯,並將其復制到第 2 卷。現在無法使用 readRDS 打開該文件,並出現錯誤“從連接讀取錯誤”。

該文件包含一個 data.table,未壓縮存儲並且 infoRDS 可以讀取元數據:

> infoRDS('corrupt.rds')
$version
[1] 3

$writer_version
[1] "3.6.3"

$min_reader_version
[1] "3.5.0"

$format
[1] "xdr"

$native_encoding
[1] "UTF-8"

此外, hexView::readRaw 可以讀取文件並顯示數據表的列的名稱。

使用

readRaw('corrupt.rds', endian = 'big', human = 'real', width = 8, offset = 5)

我可以看到許多我需要恢復的數字。 但是,這似乎是一種非常乏味的方法,因為我不了解 .rds 文件的內部格式。

我還研究了 xmlDeserializeHook,我不明白如何使用。 當然,readRDS unserializeFromConn使用的 C 代碼包含所用結構的所有信息,但更高級別的文檔會有所幫助。

有沒有比深入研究 C 代碼或手動逐個獲取數字更簡單的方法?

R 內部包含序列化格式的文檔。 除非有人在郵件列表上發布了更詳細的描述,否則這可能是我們能做的最好的事情。 但是(一目了然)這看起來是一個相當全面的描述(當與實現結合在一起時)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM