我有一个上传的 RDS 文件,然后通过curl::curl_fetch_memory()
(via httr
) 下载 - 这给了我 R 中的原始向量。
有没有办法读取表示 RDS 文件的原始向量以返回原始 R 对象?还是必须先将其写入磁盘?
我有一个类似于下面的设置:
saveRDS(mtcars, file = "obj.rds")
# upload the obj.rds file
...
# download it again via httr::write_memory()
...
obj
# [1] 1f 8b 08 00 00 00 00 00 00 03 ad 56 4f 4c 1c 55 18 1f ca 02 bb ec b2 5d
# ...
is.raw(obj)
#[1] TRUE
它似乎readRDS()
应该用来解压缩它,但它需要一个连接对象,我不知道如何从 R 原始向量创建连接对象 -rawConnection()
看起来很有希望,但给出了:
rawConnection(obj)
#A connection with
#description "obj"
#class "rawConnection"
#mode "r"
#text "binary"
#opened "opened"
#can read "yes"
#can write "no"
readRDS(rawConnection(obj))
#Error in readRDS(rawConnection(obj)) : unknown input format
通过readRDS
它看起来它看起来像它gzlib()
在下面使用但无法让它与原始矢量对象一起使用。
如果通过httr::write_disk()
-> curl::curl_fetch_disk()
->下载它,readRDS()
那么一切都很好,但这是磁盘往返,我想知道它是否可以针对大文件进行优化。