Мы можем использовать lapply
:
N <- 2
list_mat <- lapply(seq_len(ncol(mat)/N) - 1, function(x)
mat[,(N * x + 1) : (N * x+2)])
list_mat
#[[1]]
# [,1] [,2]
# [1,] 1 11
# [2,] 2 12
# [3,] 3 13
# [4,] 4 14
# [5,] 5 15
# [6,] 6 16
# [7,] 7 17
# [8,] 8 18
# [9,] 9 19
#[10,] 10 20
#[[2]]
# [,1] [,2]
# [1,] 21 31
# [2,] 22 32
# [3,] 23 33
# [4,] 24 34
#...
Это работает напрямую, потому что у вас есть 10 000 (ncol
) столбцов и вы хотите разделить их на 100 (N
) столбцов каждый. т.е. ncol
полностью делится на N
.
data
mat <- matrix(1:100, ncol = 10)