x <- runif(100)*10 #Random values between 0 and 10
y <- x+rnorm(100)*.1 #y~x+error
dataset <- data.frame(x,y) #Create data frame
plot(dataset$x,dataset$y) #Plot the data

#install.packages("cvTools")
library(cvTools) #run the above line if you don't have this library
## Warning: package 'cvTools' was built under R version 3.6.3
## Loading required package: lattice
## Loading required package: robustbase
## Warning: package 'robustbase' was built under R version 3.6.3

k <- 10 #the number of folds

folds <- cvFolds(NROW(dataset), K=k)
dataset$holdoutpred <- rep(0,nrow(dataset))

folds$subsets
##        [,1]
##   [1,]   92
##   [2,]   20
##   [3,]   51
##   [4,]   56
##   [5,]   60
##   [6,]   41
##   [7,]   88
##   [8,]   97
##   [9,]   55
##  [10,]   90
##  [11,]   48
##  [12,]   38
##  [13,]   19
##  [14,]   73
##  [15,]   79
##  [16,]   28
##  [17,]   80
##  [18,]   64
##  [19,]   27
##  [20,]   66
##  [21,]    5
##  [22,]   53
##  [23,]   61
##  [24,]   95
##  [25,]   10
##  [26,]   68
##  [27,]   67
##  [28,]    8
##  [29,]   46
##  [30,]   94
##  [31,]   91
##  [32,]   36
##  [33,]   32
##  [34,]   25
##  [35,]   62
##  [36,]   49
##  [37,]   76
##  [38,]   50
##  [39,]   31
##  [40,]   85
##  [41,]   93
##  [42,]    6
##  [43,]   65
##  [44,]   43
##  [45,]   70
##  [46,]    3
##  [47,]    7
##  [48,]   24
##  [49,]   11
##  [50,]   35
##  [51,]   17
##  [52,]   52
##  [53,]   84
##  [54,]   89
##  [55,]   75
##  [56,]  100
##  [57,]   99
##  [58,]   42
##  [59,]   87
##  [60,]   18
##  [61,]   71
##  [62,]   78
##  [63,]   96
##  [64,]    9
##  [65,]   40
##  [66,]   63
##  [67,]   47
##  [68,]   81
##  [69,]   22
##  [70,]   58
##  [71,]   30
##  [72,]   83
##  [73,]   21
##  [74,]   34
##  [75,]   14
##  [76,]   77
##  [77,]   33
##  [78,]   12
##  [79,]   23
##  [80,]   72
##  [81,]   37
##  [82,]   15
##  [83,]   57
##  [84,]    4
##  [85,]    1
##  [86,]   26
##  [87,]   82
##  [88,]   45
##  [89,]   16
##  [90,]   69
##  [91,]    2
##  [92,]   59
##  [93,]   29
##  [94,]   86
##  [95,]   54
##  [96,]   39
##  [97,]   13
##  [98,]   98
##  [99,]   74
## [100,]   44
for(i in 1:k){
  train <- dataset[folds$subsets[folds$which != i], ] #Set the training set
  validation <- dataset[folds$subsets[folds$which == i], ] #Set the validation set
  
  newlm <- lm(y~x,data=train) #Get your new linear model (just fit on the train data)
  newpred <- predict(newlm,newdata=validation) #Get the predicitons for the validation set (from the model just fit on the train data)
  
  dataset[folds$subsets[folds$which == i], ]$holdoutpred <- newpred #Put the hold out prediction in the data set for later use
}

dataset$holdoutpred #do whatever you want with these predictions
##   [1]  9.37986531  7.36958629  9.69448544  4.22282918  0.05901175  4.30528786
##   [7]  6.68422065  2.92613704  0.04585086  5.47464515  6.03970705  6.05691205
##  [13]  8.73850324  2.70684168  7.22927750  3.78620916  6.64264078  7.96807109
##  [19]  6.97500636  4.23120144  8.34641193  2.93328476  0.43772642  7.43437657
##  [25]  2.72031597  1.98981739  9.46507070  2.04977526  6.95599549  6.70293667
##  [31]  6.67031230  6.02992284  8.43646256  7.30039605  1.96147693  1.69233812
##  [37]  9.80668048  7.19814563  7.93433926  2.63533296  5.39874649  4.11989896
##  [43]  4.35776385  3.70712106  5.47778907  0.18282877  7.22316918  4.50468218
##  [49]  7.92036261  5.98776513  8.57660852  2.75501812  7.60048871  6.09359781
##  [55]  2.54423359  3.53046748  6.57138728  0.02582453  9.41327017  4.63179711
##  [61]  4.16995321  4.93777580  2.07986031  9.31644951  3.91177665  0.87261476
##  [67]  1.27158797  8.28153490  7.91493349  4.08470572  9.47184370  8.02097417
##  [73]  6.54635677  8.12829652  5.89334999  7.02792575  0.37558700  6.48234648
##  [79]  5.46959253  2.18769147  3.29189877  5.84856610  5.91766083  7.09881709
##  [85]  7.70316558  4.04706976  3.81888280  2.99950424  7.99883623  0.69128722
##  [91]  0.15598950  3.15626127  4.31720197  8.05967820  3.37996239  7.18037026
##  [97]  7.25473464 -0.01961764  3.25407554  6.51549495