在R中拆分矩阵

时间:2018-12-18 11:00:26

标签: r

我正在尝试沿行拆分矩阵,但不确定如何执行。例如,如果我有一个NxM矩阵,但想对矩阵进行拆分,以得到n(N / n)xM个矩阵,那我该怎么办?

所以,如果我有一个矩阵X:

      [,1] [,2]
 [1,]    1   21
 [2,]    2   22
 [3,]    3   23
 [4,]    4   24
 [5,]    5   25
 [6,]    6   26
 [7,]    7   27
 [8,]    8   28
 [9,]    9   29
[10,]   10   30
[11,]   11   31
[12,]   12   32
[13,]   13   33
[14,]   14   34
[15,]   15   35
[16,]   16   36
[17,]   17   37
[18,]   18   38
[19,]   19   39
[20,]   20   40`

如果n = 2,则功能块(X,n)的输出为

[[1]]

       [,1] [,2]
 [1,]    1   21
 [2,]    2   22
 [3,]    3   23
 [4,]    4   24
 [5,]    5   25
 [6,]    6   26
 [7,]    7   27
 [8,]    8   28
 [9,]    9   29
[10,]   10   30

[[2]]

       [,1] [,2]
 [1,]   11   31
 [2,]   12   32
 [3,]   13   33
 [4,]   14   34
 [5,]   15   35
 [6,]   16   36
 [7,]   17   37
 [8,]   18   38
 [9,]   19   39
[10,]   20   40

感谢您的任何帮助!

1 个答案:

答案 0 :(得分:2)

我们创建要分组的分组列

n <- 10
grp <- (seq_len(nrow(X)) - 1) %/% n + 1
split(as.data.frame(X), grp)

或使用索引对行进行子集

lapply(seq(1, nrow(X), by =  n), function(i) X[i:(i+n -1), ])

数据

X <- matrix(1:40, ncol = 2)