问题
In R, I get the content of a binary file as a string (because of design issues, I can't access the file directly).
This file was originally an lm model.
How do I convert that string back into the lm model?
Thanks
回答1:
I'm assuming you used base::dput()
according to the following example (based on this answer):
# Generate some model over some data
data <- sample(1:100, 30)
df <- data.frame(x = data, y = 2 * data + 20)
model <- lm(y ~ x, df)
# Assuming this is what you did you have the model structure inside model.R
dput(model, control = c("quoteExpressions", "showAttributes"), file = "model.R")
# ----- This is where you are, I presume -----
# So you can copy the content of model.R here (attention to the single quotes)
mstr <- '...'
# Execute the content of mstr as a piece of code (loading the model)
model1 <- eval(parse(text = mstr))
# Parse the formulas
model1$terms <- terms.formula(model1$terms)
# ----- Test it -----
# New data
df1 <- data.frame(x = 101:110)
pred <- as.integer(predict(model, df1))
pred1 <- as.integer(predict(model1, df1))
identical(pred, pred1)
# [1] TRUE
model
#
# Call:
# lm(formula = y ~ x, data = df)
#
# Coefficients:
# (Intercept) x
# 20 2
#
model1
#
# Call:
# lm(formula = y ~ x, data = df)
#
# Coefficients:
# (Intercept) x
# 20 2
# Check summary too (you'll see some minor differences)
# summary(model)
# summary(model1)
来源:https://stackoverflow.com/questions/51992464/convert-string-back-into-object-in-r