使用R在块中迭代2D矩阵

时间:2016-02-03 07:09:02

标签: r matrix iteration

我想迭代以下矩阵并打印2个单元格值的集合。有没有办法在没有for循环的情况下做到这一点?

输入:

      [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    4    7   10   13   16
[2,]    2    5    8   11   14   17
[3,]    3    6    9   12   15   18

预期产出:

     [,1] [,2]
 [1,]   1   4
 [2,]   7  10
 [3,]  13  16
 [4,]   2   5
 [5,]   8  11
 [6,]  14  17
 [7,]   3   6
 [8,]   9  12
 [9,]  15  18

这是我的代码:

mat<-matrix(data=seq(1:18), nrow=3,ncol=6)
r <- rep(seq(1,3),each=2)
c1 <- seq(1,6,2)
c2 <- seq(2,6,2)

m <- mat[r,c(c1:c2)] # This does not work, it only output first two cells

1 个答案:

答案 0 :(得分:2)

我们可以获得矩阵的转置,然后通过指定matrix

转换回ncol
matrix(t(mat), ncol=2, byrow=TRUE)
#       [,1] [,2]
# [1,]    1    4
# [2,]    7   10
# [3,]   13   16
# [4,]    2    5
# [5,]    8   11
# [6,]   14   17
# [7,]    3    6
# [8,]    9   12
# [9,]   15   18