Вы можете достичь этого, используя встроенный в embed()
функции, где его второе «измерение» аргумент эквивалентно тому, что вы «ве называется 'лаг':
x <- c(NA,NA,1,2,3,4)
embed(x,3)
## returns
[,1] [,2] [,3]
[1,] 1 NA NA
[2,] 2 1 NA
[3,] 3 2 1
[4,] 4 3 2
embed()
обсуждался в previous answer Джошуа рейха. (Обратите внимание, что я добавил x с NA, чтобы воспроизвести желаемый результат).
Это не особенно хорошо названный, но он весьма полезен и эффективен для операций с раздвижными окнами, такими как скользящие суммы и скользящие средние.
В более общем смысле: lagmatrix <- function (x, max.lag) {embed (c (rep (NA, max.lag), x), max.lag + 1)} Затем используйте lagmatrix (1: 4,2) –
Спасибо за указатель на функцию embed. Это сэкономило массу времени для меня. –