當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R serialize 簡單的序列化接口


R語言 serialize 位於 base 包(package)。

說明

用於序列化連接的簡單低級接口。

用法

serialize(object, connection, ascii, xdr = TRUE,
          version = NULL, refhook = NULL)

unserialize(connection, refhook = NULL)

參數

object

R要序列化的對象。

connection

開放的 connection 或(對於 serialize )NULL 或(對於 unserialize )原始向量(請參閱“詳細信息”)。

ascii

一個合乎邏輯的。如果是 TRUENA ,則寫入 ASCII 表示形式;否則(默認)為二進製。另請參閱 save 幫助中的注釋。

xdr

邏輯:如果使用二進製表示形式,是否應該使用大尾數表示形式(XDR)?

version

要使用的工作區格式版本。NULL指定當前默認版本 (3)。唯一支持的其他值是 2,默認值來自R1.4.0 至R3.5.0。

refhook

用於處理引用對象的鉤子函數。

細節

函數serializeobject 序列化到指定的連接。如果 connectionNULLobject 會序列化為原始向量,該向量作為 serialize 的結果返回。

引用對象的共享保留在對象內,但不會跨對 serialize 的單獨調用進行保留。

unserializeconnection 或原始向量讀取對象(由 serialize 編寫)。

refhook 函數可用於自定義非係統引用對象的處理(所有外部指針和弱引用,以及除命名空間和包環境以及 .GlobalEnv 之外的所有環境)。 serialize 的鉤子函數應該返回它想要處理的引用的字符向量;否則它應該返回 NULLunserialize 的鉤子將使用提供給 serialize 的字符向量進行調用,並且應該返回一個適當的對象。

對於文本模式連接,ascii 的默認值設置為 TRUE :隻能將 ASCII 表示形式寫入文本模式連接,嘗試使用 ascii = FALSE 將引發錯誤。

該格式由一行後跟數據組成:第一行包含一個字符:X(用於二進製序列化)和 A(用於 ASCII 序列化),後跟一個新行。 (使用的格式與 readRDS 使用的格式相同。)

由於當前使用的幾乎所有係統都是小端字節序,因此當將數據從一台小端字節序機器傳輸到另一台小端字節序機器(或在同一台機器上的進程之間)時,可以使用xdr = FALSE來避免兩端出現byte-shuffling。根據係統的不同,這可以將序列化和反序列化速度加快 3 倍。

對於 serializeNULL ,除非 connection = NULL ,當結果以原始向量返回時。

為了unserialize一個R對象。

警告

這些函數提供了穩定的接口R2.4.0(當序列化對象的存儲從字符更改為原始向量時)。但是,序列化格式可能會在未來版本中發生變化R,因此該接口不宜用於長期存儲R對象。

在 32 位平台上,原始向量僅限於 字節,但是R對象可以超過此值,並且它們的序列化通常會大於對象。

例子

x <- serialize(list(1,2,3), NULL)
unserialize(x)

## see also the examples for saveRDS

也可以看看

saveRDS 用於將對象序列化到文件或連接的更方便的接口。

saveload 用於序列化和恢複一個或多個命名對象。

有關所用格式的詳細信息,請參閱“R Internals”手冊。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Simple Serialization Interface。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。