当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。