在最近的一项家庭作业中,我们被要求运行 27 个线性模型,每次都添加一个附加变量(目标是绘制 R 2 的变化与调整后的R 2的变化)。我发现很难通过算法创建这样的公式。我最终使用的代码如下所示(请注意,数据框中的第一列是因变量,其余的都是预期的自变量。
make.formula <- function(howfar) {
formula <- c()
for (i in 1:howfar) {
if (i == 1) {
formula <- paste(formula, names(d)[i], '~')}
else if (i == howfar) {
formula <- paste(formula, names(d)[i], '')
}
else {
formula <- paste(formula, names(d)[i], '+')}
}
return(formula)
}
formulas <- lapply(seq(2, length(d)), make.formula)
formulas <- lapply(formulas, as.formula)
fits <- lapply(formulas, lm, data = d)
这可行,但似乎远非理想,我的印象是,我在 R 中使用 for 循环所做的任何事情都可能不是最好的方式。有没有更简单的方法来为给定的数据框在算法上构造公式?