gpt4 book ai didi

r - 将原始向量转换为 R 对象

转载 作者:行者123 更新时间:2023-12-04 07:34:53 24 4
gpt4 key购买 nike

如何在不写入磁盘的情况下将原始向量转换回 R 对象?我想读取 base64 数据流并将其转换为它的 R 对象表示。这是一个例子 - 我将如何取回 lm来自原始向量的对象?

## some rdata -- writes to temp file!
mod <- lm(mpg ~ cyl, data=mtcars)
f1 <- tempfile()
save(mod, file=f1, compress="bzip2")

library(base64enc)
r1 <- readBin(f1, "raw", n=file.info(f1)[1, "size"])
r2 <- base64decode(base64encode(file(f1, "rb"))) # emulate input base64
identical(r1, r2)

## I can get mod back by writing to file and loading, but how to just
## load from a raw vector?
rm(mod) # get rid of mod
f2 <- tempfile()
writeBin(r2, f2)
load(f2) # mod is back

最佳答案

在我的 RcppRedis 包中,我使用 RApiSerialize 包(它基于最初在 Rhpc 包中借用的基本 R 代码)来即时进行这些转换:

R> mod <- lm(mpg ~ cyl, data=mtcars)     # your example
R>
R> library(RApiSerialize)
R> modraw <- serializeToRaw(mod) # serialized
R> str(modraw) # really just a raw vector now
raw [1:6819] 58 0a 00 00 ...
R>

所以此时你可以对原始向量做任何你想做的事情。将其写入磁盘,将其写入数据库(就像我们使用 RcppRedis 所做的那样),....

但重要的是,您还可以恢复模型:
R> summary( unserializeFromRaw(modraw) )

Call:
lm(formula = mpg ~ cyl, data = mtcars)

Residuals:
Min 1Q Median 3Q Max
-4.981 -2.119 0.222 1.072 7.519

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 37.885 2.074 18.27 < 2e-16 ***
cyl -2.876 0.322 -8.92 6.1e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.21 on 30 degrees of freedom
Multiple R-squared: 0.726, Adjusted R-squared: 0.717
F-statistic: 79.6 on 1 and 30 DF, p-value: 6.11e-10

R>

关于r - 将原始向量转换为 R 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36119753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com