我有多个矩阵,反映了不同时间点的二分/从属网络。这些矩阵在其现任者中有很多重叠,但也有很多差异。然而,为了进一步分析,我需要它们具有相同的维度,并且每行/列具有相同的参与者,因此我需要以某种方式合并行和列名。
最终的矩阵将是大约8000乘以200,但每个单独的矩阵大约是2000乘以150。下面是一个两个矩阵的例子,以及我想要的结果:
adj1 <- matrix(0, 3, 5)
colnames(adj1) <- c("g1", "g2", "g3", "g5", "g6")
rownames(adj1) <- c("Tim", "John", "Sarah")
adj2 <- matrix(0, 4, 2)
colnames(adj2) <- c("g1", "g4")
rownames(adj2) <- c("Tim", "Mary", "John", "Paolo")
combined_adj <- matrix(0,5,6)
colnames(combined_adj) <- c("g1","g2","g3","g4","g5","g6")
rownames(combined_adj) <- c("John","Mary","Paolo","Sarah","Tim")
理想情况下,新单元格应读作“NA”或“10”,行和列按字母顺序排列。需要保留每个矩阵中的初始值。我不知道该怎么办,感谢任何帮助!
3条答案
按热度按时间efzxgjgh1#
您可以使用merge并指定要使用
row.names
进行合并。这会将其转换为data.frame,因此如果需要,您需要将其转换回矩阵。
编辑:合并多个矩阵
我们使用
Reduce
将其应用于所有矩阵。我们首先转换为data.frame,然后创建一个带有row_names的列来简化操作。k3bvogb12#
这可能是一个解决方案。但是,我假设这些单元格中确实存在的信息对于相同的行名称和列名组合总是相同的。除此之外,它还依赖于
dplyr
:w6lpcovy3#
下面是一个带有
reshape
的基本R选项它给出了
或者,我们使用
xtabs
它给出了