I’m a bit lost on the question, but this line
vec <- 1:3
embed(c(rep(0,length(vec)),vec),length(vec)+1)
…produces the last part of your desired result:
     [,1] [,2] [,3] [,4]
[1,]    1    0    0    0
[2,]    2    1    0    0
[3,]    3    2    1    0
Which you can then bind to the first number of the vector.
cbind(vec[1],embed(c(rep(0,length(vec)),vec),length(vec)+1))
to give…
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    1    0    0    0
[2,]    1    2    1    0    0
[3,]    1    3    2    1    0
1
solved Efficient way to create matrix of different value of a vector in R [closed]