r语言 - 尝试使用 dplyr::d o 在内部构建一个模型,然后在同一个 dplyr::d o 调用中拉取 coef(m



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

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

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])

第二个代码块不会引发错误,但会为截距和斜率返回 NULL。我认为我的问题是不理解 dplyr::d o 中的参考结构。

但我只是学习 dplyr,不确定如何做到这一点。谢谢。

我们不需要.$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

最新更新