我正在尝试为一组标准曲线构建一系列线性模型。
目前,此代码正在努力生成我想要的输出(每个线性模型的截距和斜率):
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