将公式应用于R中的每个数据帧列

时间:2016-04-18 13:26:18

标签: r

我需要将线性回归公式应用于我的数据框中名为mydf的所有列。 mydf中有数千列,因此在公式中指出它们中的每一列都是不可能的。有两列weightage,在我要应用此公式的所有其他列的公式中将保持相同。

第一列的公式(列bmd)是

fit1 <- lm(bmd ~ weight + age, data=mydf)
mydf[,"a"] <-fit1$fitted.values

我也希望将此公式应用于其他列(weightage除外)

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

2 个答案:

答案 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到您的数据集。