我需要将线性回归公式应用于我的数据框中名为mydf
的所有列。 mydf中有数千列,因此在公式中指出它们中的每一列都是不可能的。有两列weight
和age
,在我要应用此公式的所有其他列的公式中将保持相同。
第一列的公式(列bmd
)是
fit1 <- lm(bmd ~ weight + age, data=mydf)
mydf[,"a"] <-fit1$fitted.values
我也希望将此公式应用于其他列(weight
和age
除外)
fit1 <- lm(bp ~ weight + age, data=mydf)
mydf[,"bp"] <-fit1$fitted.values
和
fit1 <- lm(choles ~ weight + age, data=mydf)
mydf[,"choles"] <-fit1$fitted.values
什么是最好的(时间效率很长的时间)方法来扩展这个公式,并将拟合的值存储在所有想要的列(bmd
,{{1}的右列中},bp
)?
是myDF
choles
答案 0 :(得分:2)
试试这个:
apply(mydf[ ,-c(4:5)], 2, function(x) lm(x ~ mydf$weight + mydf$age)$fitted.values)
编辑:添加了缺少的逗号
答案 1 :(得分:0)
一种方法:
# get names of all dependent variables
dependents <- names(df[, -which(names(df) %in% c("weight", "age"))]
# build a little function
myFit <- function(depName) {
fit1 <- lm(as.formula(paste(depName, "~ weight + age")), data=mydf)
return(fit1$fitted.values)
}
# sapply them
fittedValues <- sapply(dependents, myFit)
然后cbind
到您的数据集。