行绑定矩阵,将所有行归零但只有一行

问题描述 投票:0回答:2

给定一个矩阵

a <- matrix(c(15,2,11,16,7,12,1,8,3), nrow=3, ncol=3, byrow=T)

我想对矩阵的三个副本进行行绑定,但是在每个副本中,除了一个行之外的所有行都应该具有零值。期望的结果:

 15    2   11
  0    0    0
  0    0    0
  0    0    0
 16    7   12
  0    0    0
  0    0    0
  0    0    0
  1    8    3

我可以通过rbind(a[1,],0,0,0,a[2,],0,0,0,a[3,])做到这一点,但处理大型矩阵时有更好的方法吗?

r matrix
2个回答
2
投票
matrix(t(cbind(a,matrix(0,3,9))),ncol=3,byrow=T)[1:9,]
      [,1] [,2] [,3]
 [1,]   15    2   11
 [2,]    0    0    0
 [3,]    0    0    0
 [4,]    0    0    0
 [5,]   16    7   12
 [6,]    0    0    0
 [7,]    0    0    0
 [8,]    0    0    0
 [9,]    1    8    3

1
投票

这个怎么样:

apply(a, 2, function(r) rbind(r, matrix(rep(0,9), nrow=3)))[1:9, ]
      [,1] [,2] [,3]
 [1,]   15    2   11
 [2,]    0    0    0
 [3,]    0    0    0
 [4,]    0    0    0
 [5,]   16    7   12
 [6,]    0    0    0
 [7,]    0    0    0
 [8,]    0    0    0
 [9,]    1    8    3
© www.soinside.com 2019 - 2024. All rights reserved.