从矩阵中选择特定的行序列

Selecting specific sequence of rows from a matrix

我有一个2000 x 20阶的数据矩阵,我想从矩阵中选择整行的特定顺序,例如,第1、第7、第8、第14、第15、第21、第22,是这样的直到最后 2000 行的一系列行。

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

手动 select 这样的序列非常困难,是否有替代方案可以在 R 中完成相同的任务? for 循环是否有助于解决此类问题。

您可以先定义序列,例如使用sequence,然后使用 [].

进行子集化
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 创建一个长度为 nvec 且起始点为 from.

的序列序列

试试这个

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

使用更新的问题数据,例如:

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

因为你的模式在 2000 年之前是 +1/+6,你可以 rep 吃掉两个值 c(1,6) 的次数与 sum(c(1,6)) 进入 2000 年的次数一样多,然后取 cum 公式 sum.