R:每第i列等于零的矩阵列表

时间:2017-05-15 19:11:15

标签: r matrix

假设我们有以下矩阵:

'2345','6543','7854'

我想将这个矩阵转换为长度等于列数的列表,这样每个第i列都用零填满。

即。对于这种特殊情况,我想要以下内容:

mat <- matrix(1:20,4,5)
mat
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9   13   17
[2,]    2    6   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20

关于大型矩阵的一般情况我是如何做到这一点的?

1 个答案:

答案 0 :(得分:3)

您可以这样做:

lapply(seq_len(ncol(mat)), function(j) {mat[,j] = 0; mat})

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

[[2]]
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    0    9   13   17
[2,]    2    0   10   14   18
[3,]    3    0   11   15   19
[4,]    4    0   12   16   20

[[3]]
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    0   13   17
[2,]    2    6    0   14   18
[3,]    3    7    0   15   19
[4,]    4    8    0   16   20

[[4]]
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9    0   17
[2,]    2    6   10    0   18
[3,]    3    7   11    0   19
[4,]    4    8   12    0   20

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