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 |
一個合乎邏輯的。如果是 |
version |
要使用的工作區格式版本。 |
compress |
一個邏輯,指定保存到命名文件是使用 |
refhook |
用於處理引用對象的鉤子函數。 |
細節
saveRDS
和readRDS
提供保存單個的方法R對象連接(通常是文件)並恢複該對象,很可能使用不同的名稱。這不同於save
和load
,它將一個或多個命名對象保存和恢複到環境中。它們被廣泛使用R本身,例如存儲包的元數據並存儲help.search
數據庫:".rds"
文件擴展名是最常用的。
函數 serialize
和 unserialize
提供了一個稍微 lower-level 的序列化接口:由 serialize
序列化到連接的對象可以由 readRDS
讀回,反之亦然。
函數 infoRDS
檢索 meta-data 有關由 saveRDS
或 serialize
生成的序列化。 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))
也可以看看
有關所用格式的詳細信息,請參閱“R Internals”手冊。
相關用法
- R readRenviron 從文件設置環境變量
- R readChar 與連接之間傳輸字符串
- R readline 從終端讀取一行
- R readBin 與連接之間傳輸二進製數據
- R readLines 從連接讀取文本行
- R remove 從指定環境中刪除對象
- R rep 複製向量和列表的元素
- R reg.finalizer 對象的最終確定
- R rev 反轉元素
- R regmatches 提取或替換匹配的子字符串
- R replace 替換向量中的值
- R rank 樣本排名
- R rapply 遞歸地將函數應用於列表
- R raw 原始向量
- R rawConnection 原始連接
- R row 行索引
- R row.names 獲取和設置 DataFrame 的行名稱
- R rowsum 根據分組變量給出矩陣或 DataFrame 的列和
- R range 值範圍
- R rle 遊程長度編碼
- R round.POSIXt 舍入/截斷日期時間對象
- R rawConversion 與(位/打包)原始向量之間的轉換
- R file.path 構造文件路徑
- R grep 模式匹配和替換
- R getwd 獲取或設置工作目錄
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Serialization Interface for Single Objects。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。