我试图为一组标准曲线构建一系列线性模型。
目前,此代码正在生成我想要的输出(每个线性模型的截距和斜率):
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而不知道如何做到这一点。感谢。
答案 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