I'm running the following code on quite large data frames. I've rewritten it for the iris dataset to make it reproducable.  
I'm quite unexperienced with the `apply` functions and I find them a pain in the bum to apply them. 

**Is there any ways to drastically improve the performance of this process?**


    lmfit <- lm(iris$Petal.Width ~ iris$Sepal.Length + iris$Sepal.Width)
    out_index <- 1
    TableWithResiduals <- data.frame(matrix(ncol = ncol(iris) +1, nrow = nrow(iris)))
    for (row in 1:length(resid(lmfit))){
      TableWithResiduals[out_index,] <- cbind(iris[row,],resid(lmfit)[row])
      out_index <- out_index +1  
    }
    colnames(TableWithResiduals) <- colnames(iris)
    colnames(TableWithResiduals)[length(TableWithResiduals)] <- "Residual_value"