如何使用矩阵产品在较大的矩阵中分配矩阵的条目

时间:2013-06-06 11:23:25

标签: r algorithm linear-algebra

给定矩阵A,其中A是

x_11  x_12  x_13 
x_21  x_22  x_23
x_31  x_32  x_33
x_41  x_42  x_43

如何使用矩阵产品有效地创建第二个矩阵?

x_11    0   0   x_21    0   0   x_31    0   0   x_41    0   0
0   x_12    0   0   x_22    0   0   x_32    0   0   x_42    0
0   0   x_13    0   0   x_23    0   0   x_33    0   0   x_43

2 个答案:

答案 0 :(得分:4)

这是一种方式:

m <- as.matrix(read.table(text='11  12  13 
21  22  23
31  32  33
41  42  43'))

do.call(cbind, lapply(split(m, seq(nrow(m))), diag))
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
# [1,]   11    0    0   21    0    0   31    0    0    41     0     0
# [2,]    0   12    0    0   22    0    0   32    0     0    42     0
# [3,]    0    0   13    0    0   23    0    0   33     0     0    43

答案 1 :(得分:1)

说原始矩阵是m

m <- matrix(1:12, nrow=4)

现在,有些rowcol

m2 <- matrix(0, nrow=3, ncol=length(m))
m2[((col(m2) - 1) %% 3 + 1) == row(m2)] <- m
m2