How to use one vector to create a matrix with many columns

Is there a faster way to take a vector and turn it into a matrix of 10 columns, for example, at the next output?

I have a vector of 9000 elements, and I'm trying to create 200 columns, starting from the last observations and ending with the previous 200 observations, and going back for each column.

In the example below, the number 10 represents the 10th place in the vector, 9 represents the 9th place, ..., the number 1 represents the first observation in the vector.

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]   10    9    8    7    6    5    4    3    2     1
 [2,]   11   10    9    8    7    6    5    4    3     2
 [3,]   12   11   10    9    8    7    6    5    4     3
 [4,]   13   12   11   10    9    8    7    6    5     4
 [5,]   14   13   12   11   10    9    8    7    6     5
 [6,]   15   14   13   12   11   10    9    8    7     6
 [7,]   16   15   14   13   12   11   10    9    8     7
 [8,]   17   16   15   14   13   12   11   10    9     8
 [9,]   18   17   16   15   14   13   12   11   10     9
[10,]   19   18   17   16   15   14   13   12   11    10
[11,]   20   19   18   17   16   15   14   13   12    11

    a<-1:20
    z<-cbind(
      a1<-a[-c(1:9)],
      a2<-a[-c(1:8,length(a))],
      a3<-a[-c(1:7,length(a)-1,length(a))],
      a4<-a[-c(1:6,(length(a)-2):length(a))],
      a5<-a[-c(1:5,(length(a)-3):length(a))],
      a6<-a[-c(1:4,(length(a)-4):length(a))],
      a7<-a[-c(1:3,(length(a)-5):length(a))],
      a8<-a[-c(1:2,(length(a)-6):length(a))],
      a9<-a[-c(1,(length(a)-7):length(a))],
      a10<-a[-c((length(a)-8):length(a))]
      )
    z

I did the same for 40 columns, but I can’t imagine that I did the same for 200 columns.

Any help would be greatly appreciated. Thank you in advance

a<-1:100
z<-cbind(
  a1<-a[-c(1:39)],
  a2<-a[-c(1:38,length(a))],
  a3<-a[-c(1:37,length(a)-1,length(a))],
  a4<-a[-c(1:36,(length(a)-2):length(a))],
  a5<-a[-c(1:35,(length(a)-3):length(a))],
  a6<-a[-c(1:34,(length(a)-4):length(a))],
  a7<-a[-c(1:33,(length(a)-5):length(a))],
  a8<-a[-c(1:32,(length(a)-6):length(a))],
  a9<-a[-c(1:31,(length(a)-7):length(a))],
  a10<-a[-c(1:30,(length(a)-8):length(a))],

  a11<-a[-c(1:29,(length(a)-9):length(a))],
  a12<-a[-c(1:28,(length(a)-10):length(a))],
  a13<-a[-c(1:27,(length(a)-11):length(a))],
  a14<-a[-c(1:26,(length(a)-12):length(a))],
  a15<-a[-c(1:25,(length(a)-13):length(a))],
  a16<-a[-c(1:24,(length(a)-14):length(a))],
  a17<-a[-c(1:23,(length(a)-15):length(a))],
  a18<-a[-c(1:22,(length(a)-16):length(a))],
  a19<-a[-c(1:21,(length(a)-17):length(a))],
  a20<-a[-c(1:20,(length(a)-18):length(a))],

  a21<-a[-c(1:19,(length(a)-19):length(a))],
  a22<-a[-c(1:18,(length(a)-20):length(a))],
  a23<-a[-c(1:17,(length(a)-21):length(a))],
  a24<-a[-c(1:16,(length(a)-22):length(a))],
  a25<-a[-c(1:15,(length(a)-23):length(a))],
  a26<-a[-c(1:14,(length(a)-24):length(a))],
  a27<-a[-c(1:13,(length(a)-25):length(a))],
  a28<-a[-c(1:12,(length(a)-26):length(a))],
  a29<-a[-c(1:11,(length(a)-27):length(a))],
  a30<-a[-c(1:10,(length(a)-28):length(a))],

  a31<-a[-c(1:9,(length(a)-29):length(a))],
  a32<-a[-c(1:8,(length(a)-30):length(a))],
  a33<-a[-c(1:7,(length(a)-31):length(a))],
  a34<-a[-c(1:6,(length(a)-32):length(a))],
  a35<-a[-c(1:5,(length(a)-33):length(a))],
  a36<-a[-c(1:4,(length(a)-34):length(a))],
  a37<-a[-c(1:3,(length(a)-35):length(a))],
  a38<-a[-c(1:2,(length(a)-36):length(a))],
  a39<-a[-c(1,(length(a)-37):length(a))],
  a40<-a[-c((length(a)-38):length(a))]
)
z
+4
source share
2 answers

, embed() :

x <- 1:9000
m <- embed(x,200)
m <- m[,rev(seq(ncol(m)))]  ## reverse columns
+5

:

m <- matrix(nrow=11, ncol=10)
ncol(m) - col(m) + row(m)
#       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#  [1,]   10    9    8    7    6    5    4    3    2     1
#  [2,]   11   10    9    8    7    6    5    4    3     2
#  [3,]   12   11   10    9    8    7    6    5    4     3
#  [4,]   13   12   11   10    9    8    7    6    5     4
#  [5,]   14   13   12   11   10    9    8    7    6     5
#  [6,]   15   14   13   12   11   10    9    8    7     6
#  [7,]   16   15   14   13   12   11   10    9    8     7
#  [8,]   17   16   15   14   13   12   11   10    9     8
#  [9,]   18   17   16   15   14   13   12   11   10     9
# [10,]   19   18   17   16   15   14   13   12   11    10
# [11,]   20   19   18   17   16   15   14   13   12    11
+7

All Articles