Home > Net >  Selecting specific sequence of rows from a matrix
Selecting specific sequence of rows from a matrix

Time:01-06

I have a data matrix of order 2000 x 20, and I want to choose a specific order of entire rows from the matrix, for example, 1st,7th, 8th, 14th, 15th, 21th, 22th, is such a sequence of rows until the last 2000th rows.

[1, 7, 8, 14, 15, 21, 22, ...]

Manually it's very difficult to select such a sequence, is there is an alternative to do the same task in R? are the for looping is helpful in solving such a problem.

CodePudding user response:

Using the updated question data, something like:

cumsum(rep(c(1,6), 2000/7))
#  [1]    1    7    8   14   15
#  ...
#[566] 1981 1982 1988 1989 1995

Since your pattern is 1/ 6 up until 2000, you can repeat the two values c(1,6) as many times as sum(c(1,6)) goes in to 2000, and then take a cumulative sum.

CodePudding user response:

Try this

mat[sort(c(k <- seq(6, 2000, by = 7), k   1)),]

CodePudding user response:

You can define your sequence first, using e.g. sequence, and then subset using [].

n = 2000 / 7 
s = sequence(nvec = c(1, rep(2,n)), from = c(1, 7*1:n))
# s
# [1]    1    7    8   14   15   21   22   28   29   35   36   42   43   49   50   56   57   63   64   70   71   ...

yourMatrix[s, ]

sequence creates a sequence of sequences of length nvec and of starting point from.

  •  Tags:  
  • Related