本文介绍了如何将字符串公式传递给 R 的 lm 并查看摘要中的公式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在下面的R会话中, summary(model)将公式显示为 model_str .如何使它显示为 mpg〜cyl + hp ,同时仍然能够通过字符串设置模型公式?

In the R session below, summary(model) shows the formula as model_str. How do I get it to show as mpg ~ cyl + hp while still being able to set the model formula via a string?

> data(mtcars)
> names(mtcars)
 [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear" "carb"
> model_str <- 'mpg ~ cyl + hp'
> model <- lm(model_str, data=mtcars)
> summary(model)

Call:
lm(formula = model_str, data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max
-4.4948 -2.4901 -0.1828  1.9777  7.2934

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept) 36.90833    2.19080  16.847  < 2e-16 ***
cyl         -2.26469    0.57589  -3.933  0.00048 ***
hp          -0.01912    0.01500  -1.275  0.21253
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.173 on 29 degrees of freedom
Multiple R-squared:  0.7407,    Adjusted R-squared:  0.7228
F-statistic: 41.42 on 2 and 29 DF,  p-value: 3.162e-09

推荐答案

使用 do.call ,以便先将 model_str 评估后再发送给 lm ,但是引用 mtcars ,这样就不会(否则,会有大量输出显示 mtcars 中的实际值).

Use do.call so that model_str gets evaluated before being sent to lm but quote mtcars so that it is not (otherwise there would be a huge output showing the actual values in mtcars).

do.call("lm", list(as.formula(model_str), data = quote(mtcars)))

给予:

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

Coefficients:
(Intercept)          cyl           hp
   36.90833     -2.26469     -0.01912

这篇关于如何将字符串公式传递给 R 的 lm 并查看摘要中的公式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-28 22:21