MostAccuratePred <- function(df.gap){ fit <- lm(lifeExp ~ log(gdpPercap), data = df.gap) df.gap[, "pred"] <- predict(fit, newdata = df.gap) df.gap[, "error"] <- abs(df.gap$pred-df.gap$lifeExp) return(arrange(df.gap, error)$country[1:10] %>% as.character) } RMSE <- function(coef, intercept, data){ return(sqrt(mean((data$Y-(intercept+coef*data$X))**2))) } my.lm <- function(data, intercept){ coefs <- seq(-5, 5, 0.01) return(coefs[which.min(sapply(coefs, FUN=RMSE, intercept, data))]) } my.data <- data.frame(X = c(1, 2, 3), Y = c(3.1, 4.9, 7.05)) my.lm(my.data, 1)