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


R readRDS 單個對象的序列化接口


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

說明

函數要寫一個R對象到文件並恢複它。

用法

saveRDS(object, file = "", ascii = FALSE, version = NULL,
        compress = TRUE, refhook = NULL)

readRDS(file, refhook = NULL)
infoRDS(file)

參數

object

R要序列化的對象。

file

a base connections或文件的名稱R對象被保存或讀取。

ascii

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

version

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

compress

一個邏輯,指定保存到命名文件是使用 "gzip" 壓縮,還是使用 "gzip""bzip2""xz" 之一來指示要使用的壓縮類型。如果 file 是連接,則忽略。

refhook

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

細節

saveRDSreadRDS提供保存單個的方法R對象連接(通常是文件)並恢複該對象,很可能使用不同的名稱。這不同於saveload,它將一個或多個命名對象保存和恢複到環境中。它們被廣泛使用R本身,例如存儲包的元數據並存儲help.search數據庫:".rds"文件擴展名是最常用的。

函數 serializeunserialize 提供了一個稍微 lower-level 的序列化接口:由 serialize 序列化到連接的對象可以由 readRDS 讀回,反之亦然。

函數 infoRDS 檢索 meta-data 有關由 saveRDSserialize 生成的序列化。 infoRDS 無法用於檢測文件是否序列化或是否有效。

所有這些接口都使用相同的序列化格式,但 save 在序列化單個對象(要保存的所有對象的配對列表)之前寫入單行標頭(通常為 "RDXs\n" )。

如果 file 是文件名,則由 gzfile 打開,但 save(compress = FALSE) 使用 file 。僅針對例外情況,標記為 file 的編碼無法轉換為 Windows 上處理的本機編碼。

file 是文件名時,壓縮由打開的連接處理,因此隻有當 file 是連接時(如果由連接處理)才可以進行壓縮。所以例如url 連接需要包含在對 gzcon 的調用中。

如果提供了連接,則如果尚未打開,它將在函數持續時間內打開(以二進製模式):如果已打開,則必須處於 saveRDS(ascii = FALSE) 的二進製模式或讀取非 ASCII 保存。

為了readRDS, 一個R對象。

對於 saveRDS 來說,NULL 是不可見的。

為了infoRDS, 一個R包含元素的列表version(版本號,目前為2或3),writer_version(版本R產生序列化),min_reader_version(最低版本R可以讀取序列化),format(數據表示)和native_encoding(生成序列化的會話的本機編碼,自版本 3 起可用)。數據表示形式如下"xdr"對於大端二進製表示,"ascii"用於 ASCII 表示(通過生成ascii = TRUE或者ascii = NA) 或者"binary"(具有本機 ‘endianness’ 的二進製表示形式,可以通過以下方式生成serialize)。

警告

saveRDS(或文件連接的serialize)生成的文件不適合作為機器之間的交換格式,例如從網站下載。 save 生成的文件具有標識文件類型的標頭,因此可以更好地防止錯誤使用。

例子

fil <- tempfile("women", fileext = ".rds")
## save a single object to file
saveRDS(women, fil)
## restore it under a different name
women2 <- readRDS(fil)
identical(women, women2)
## or examine the object via a connection, which will be opened as needed.
con <- gzfile(fil)
readRDS(con)
close(con)

## Less convenient ways to restore the object
## which demonstrate compatibility with unserialize()
con <- gzfile(fil, "rb")
identical(unserialize(con), women)
close(con)
con <- gzfile(fil, "rb")
wm <- readBin(con, "raw", n = 1e4) # size is a guess
close(con)
identical(unserialize(wm), women)

## Format compatibility with serialize():
fil2 <- tempfile("women")
con <- file(fil2, "w")
serialize(women, con) # ASCII, uncompressed
close(con)
identical(women, readRDS(fil2))
fil3 <- tempfile("women")
con <- bzfile(fil3, "w")
serialize(women, con) # binary, bzip2-compressed
close(con)
identical(women, readRDS(fil3))

unlink(c(fil, fil2, fil3))

也可以看看

serializesaveload

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

相關用法


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