从矩阵中选择特定的行序列
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
.
我有一个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
.