有没有一种方法可以从一个向量传递lm的公式,并在另一个向量中获得R2的集合(不使用循环)?

时间:2019-04-19 20:41:36

标签: r lm

我想检查lm中的R2是否有相同数据集上的不同公式。
我不想使用循环,而是从一个向量传递公式,并在另一个向量中获取R2集。

我尝试了以下代码。

data(mtcars)
formulas <- paste("mpg~",colnames(mtcars[2:11]))
R_square <- summary(lm(data=mtcars,formulas))$r.squared

我希望R_square向量包含与公式向量一样多的值,但是它只有一个值。
它的工作原理就像为第一个公式只构建了一个模型。

有办法解决吗?

1 个答案:

答案 0 :(得分:0)

您可能正在寻找类似的东西:

R_square <- sapply(formulas, 
                   function(x) summary(lm(x, data = mtcars))$r.squared)

> R_square
 mpg~ cyl mpg~ disp   mpg~ hp mpg~ drat   mpg~ wt mpg~ qsec   mpg~ vs 
0.7261800 0.7183433 0.6024373 0.4639952 0.7528328 0.1752963 0.4409477 
  mpg~ am mpg~ gear mpg~ carb 
0.3597989 0.2306734 0.3035184