Лог c, по-видимому, состоит в удалении последних n строк, соответствующих значениям «запаздывания», и сохранении последних пяти строк (здесь не совсем понятна причина). Если это правильно, вы можете сделать это следующим образом.
Matrix <- matrix(1:64, nrow = 8)
lagvalues <- 1:3
rowwindow <- 5
lapply(lagvalues, function(i) tail(head(Matrix, -i), rowwindow))
[[1]]
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 3 11 19 27 35 43 51 59
[2,] 4 12 20 28 36 44 52 60
[3,] 5 13 21 29 37 45 53 61
[4,] 6 14 22 30 38 46 54 62
[5,] 7 15 23 31 39 47 55 63
[[2]]
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 2 10 18 26 34 42 50 58
[2,] 3 11 19 27 35 43 51 59
[3,] 4 12 20 28 36 44 52 60
[4,] 5 13 21 29 37 45 53 61
[5,] 6 14 22 30 38 46 54 62
[[3]]
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 9 17 25 33 41 49 57
[2,] 2 10 18 26 34 42 50 58
[3,] 3 11 19 27 35 43 51 59
[4,] 4 12 20 28 36 44 52 60
[5,] 5 13 21 29 37 45 53 61
Или более эффективно:
nr <- nrow(Matrix)
lapply(lagvalues, function(i) Matrix[(nr - (rowwindow - 1) - i):(nr - i),])