尝试使用dplyr :: do构建模型,然后在同一个dplyr :: do调用中拉入coef(模型)

时间:2016-02-03 15:50:22

标签: r dplyr

我试图为一组标准曲线构建一系列线性模型。

目前,此代码正在生成我想要的输出(每个线性模型的截距和斜率):

slopes <- STANDARDS %>% group_by(plate, col, row, conc_ug_mL) %>% do(
    #model = lm(value ~ variable, data = .),
    intercept = coef(lm(value ~ variable, data = .))[1],
    slope = coef(lm(value ~ variable, data = .))[2])

但是我不得不对模型线进行评论并拨打lm两次。我真的想这样做:

slopes2 <- STANDARDS %>% group_by(plate, col, row, conc_ug_mL) %>% do(
    model = lm(value ~ variable, data = .),
    intercept = coef(.$model)[1],
    slope = coef(.$model)[2])

第二个代码块不会引发错误,但会为Intercept和Slope返回NULL。我认为我的问题不是理解dplyr :: do。

中的参考结构

但我只是在学习dplyr而不知道如何做到这一点。感谢。

1 个答案:

答案 0 :(得分:2)

我们不需要.$model。使用可重现的例子

 data(mtcars)
 mtcars %>%
   group_by(cyl) %>% 
   do({model = lm(wt~gear, data=.)
   data.frame(intercept= coef(model)[1], slope=coef(model)[2])})
 #    cyl intercept      slope
 # (dbl)     (dbl)      (dbl)
 #1     4  3.829406 -0.3773438
 #2     6  4.180750 -0.2757500
 #3     8  5.205208 -0.3670417