如何将矩阵转换为 R 中的不同矩阵?

w12*_*678 3 split r matrix

在这里,我有一些代码生成这样的矩阵:

N = 200
T = 10
mu_0 <- matrix(diag(1, T))
dim(mu_0) <- c(T,T)
mu_t_0 <- matrix(rep(t(mu_0), N), ncol = T, byrow = TRUE)
Run Code Online (Sandbox Code Playgroud)

通常结果是这样的

   V1   V2  V3  V4  V5  V6  V7  V8  V9 V10
1   1   0   0   0   0   0   0   0   0   0
2   0   1   0   0   0   0   0   0   0   0
3   0   0   1   0   0   0   0   0   0   0
4   0   0   0   1   0   0   0   0   0   0
5   0   0   0   0   1   0   0   0   0   0
6   0   0   0   0   0   1   0   0   0   0
7   0   0   0   0   0   0   1   0   0   0
8   0   0   0   0   0   0   0   1   0   0
9   0   0   0   0   0   0   0   0   1   0
10  0   0   0   0   0   0   0   0   0   1
11  1   0   0   0   0   0   0   0   0   0
12  0   1   0   0   0   0   0   0   0   0
13  0   0   1   0   0   0   0   0   0   0
14  0   0   0   1   0   0   0   0   0   0
15  0   0   0   0   1   0   0   0   0   0
16  0   0   0   0   0   1   0   0   0   0
17  0   0   0   0   0   0   1   0   0   0
18  0   0   0   0   0   0   0   1   0   0
19  0   0   0   0   0   0   0   0   1   0
20  0   0   0   0   0   0   0   0   0   1
...
Run Code Online (Sandbox Code Playgroud)

现在为了以后的计算,我想把这个大矩阵分成不同的小矩阵,如下所示:

矩阵一:

1  
0 
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
...
Run Code Online (Sandbox Code Playgroud)

矩阵二:

0
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
...
Run Code Online (Sandbox Code Playgroud)

我尝试了 split 功能,但我无法得到我想要的。有什么解决办法吗?

GKi*_*GKi 5

可以使用asplit拆分由其余量的阵列或矩阵

x <- asplit(mu_t_0, 2)
str(x)
#List of 10
# $ : num [1:2000(1d)] 1 0 0 0 0 0 0 0 0 0 ...
# $ : num [1:2000(1d)] 0 1 0 0 0 0 0 0 0 0 ...
# $ : num [1:2000(1d)] 0 0 1 0 0 0 0 0 0 0 ...
# $ : num [1:2000(1d)] 0 0 0 1 0 0 0 0 0 0 ...
# $ : num [1:2000(1d)] 0 0 0 0 1 0 0 0 0 0 ...
# $ : num [1:2000(1d)] 0 0 0 0 0 1 0 0 0 0 ...
# $ : num [1:2000(1d)] 0 0 0 0 0 0 1 0 0 0 ...
# $ : num [1:2000(1d)] 0 0 0 0 0 0 0 1 0 0 ...
# $ : num [1:2000(1d)] 0 0 0 0 0 0 0 0 1 0 ...
# $ : num [1:2000(1d)] 0 0 0 0 0 0 0 0 0 1 ...
# - attr(*, "dim")= int 10
Run Code Online (Sandbox Code Playgroud)