从R中较小的矩阵创建一个更大的矩阵

时间:2015-08-31 02:16:39

标签: r matrix text-files

我在一个名为“Disintegration T1”的文件夹中有一系列文本文件,如下所示:

> 1.txt
0   0   0   0   1
1   0   0   0   1
0   1   0   0   1
0   0   0   0   0
1   1   1   1   0
> 2.txt
0   1   1   0   1
0   0   1   1   1
1   1   0   1   1
1   1   1   0   1
0   0   0   0   1
> 3.txt
0   1   1   1
1   0   0   0
0   0   0   0
1   0   0   0

这些文件都是4X4或5X5。它们必须作为矩阵读入,因为数据用于社交网络分析。我的目标是自动化将这些矩阵放入更大的矩阵的过程,使得这些矩阵彼此直接对角,并且在较大矩阵内的空白空间中输入0。在这种情况下,最终结果如下:

> mega_matrix
0   0   0   0   1   0   0   0   0   0   0   0   0   0
1   0   0   0   1   0   0   0   0   0   0   0   0   0
0   1   0   0   1   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0
1   1   1   1   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   1   1   0   1   0   0   0   0
0   0   0   0   0   0   0   1   1   1   0   0   0   0
0   0   0   0   0   1   1   0   1   1   0   0   0   0
0   0   0   0   0   1   1   1   0   1   0   0   0   0
0   0   0   0   0   0   0   0   0   1   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   1   1   1
0   0   0   0   0   0   0   0   0   0   1   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   1   0   0   0

谢谢!

1 个答案:

答案 0 :(得分:3)

你想要Matrix包中的bdiag

library(Matrix)
bdiag(matrix1, matrix2, matrix3)

要完成整个目录(感谢评论中的@ user20650):

bdiag(lapply(dir(), function(x){as.matrix(read.table(x))}))