Мы можем использовать shift
из data.table
library(data.table)
do.call(cbind, shift(x, 0:9, type = 'lead'))
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] 1 2 3 4 5 6 7 8 9 10
# [2,] 2 3 4 5 6 7 8 9 10 NA
# [3,] 3 4 5 6 7 8 9 10 NA NA
# [4,] 4 5 6 7 8 9 10 NA NA NA
# [5,] 5 6 7 8 9 10 NA NA NA NA
# [6,] 6 7 8 9 10 NA NA NA NA NA
# [7,] 7 8 9 10 NA NA NA NA NA NA
# [8,] 8 9 10 NA NA NA NA NA NA NA
# [9,] 9 10 NA NA NA NA NA NA NA NA
#[10,] 10 NA NA NA NA NA NA NA NA NA
В base R
, мы можем использовать embed
out <- embed(c(x, x), 10)
replace(out, lower.tri(out), NA)[, 10:1]
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] 1 2 3 4 5 6 7 8 9 10
# [2,] 2 3 4 5 6 7 8 9 10 NA
# [3,] 3 4 5 6 7 8 9 10 NA NA
# [4,] 4 5 6 7 8 9 10 NA NA NA
# [5,] 5 6 7 8 9 10 NA NA NA NA
# [6,] 6 7 8 9 10 NA NA NA NA NA
# [7,] 7 8 9 10 NA NA NA NA NA NA
# [8,] 8 9 10 NA NA NA NA NA NA NA
# [9,] 9 10 NA NA NA NA NA NA NA NA
#[10,] 10 NA NA NA NA NA NA NA NA NA
#[11,] NA NA NA NA NA NA NA NA NA NA