r.b*_*bot 3 regression r lm dplyr
阅读do()
dplyr中的文档,我对为数据组创建回归模型的能力印象深刻,并且想知道是否可以使用不同的自变量而不是数据组来复制它.
到目前为止我已经尝试过了
require(dplyr)
data(mtcars)
models <- data.frame(var = c("cyl", "hp", "wt"))
models <- models %>% do(mod = lm(mpg ~ as.name(var), data = mtcars))
Error in as.vector(x, "symbol") :
cannot coerce type 'closure' to vector of type 'symbol'
models <- models %>% do(mod = lm(substitute(mpg ~ i, as.name(.$var)), data = mtcars))
Error in substitute(mpg ~ i, as.name(.$var)) :
invalid environment specified
Run Code Online (Sandbox Code Playgroud)
期望的最终输出将是类似的
var slope standard_error_slope
1 cyl -2.87 0.32
2 hp -0.07 0.01
3 wt -5.34 0.56
Run Code Online (Sandbox Code Playgroud)
我知道使用lapply方法可能有类似的东西,但是发现apply系列很难理解.有没有dplyr解决方案?
链接页面中的方法没有什么特别复杂的.使用substitute
和as.name
有点神秘,但这很容易纠正.
varlist <- names(mtcars)[-1]
models <- lapply(varlist, function(x) {
form <- formula(paste("mpg ~", x))
lm(form, data=mtcars)
})
Run Code Online (Sandbox Code Playgroud)
dplyr不是R编程的全部和全部.我建议熟悉*apply函数,因为它们在dplyr不起作用的许多情况下都会有用.