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