样本数据:
mat1 <- data.matrix(read.table(text="A B C D
a 1 0 0 0
b 0 1 0 0
c 0 1 0 0
d 0 0 1 0
e 0 0 0 1", header = TRUE, row.names = 1))
mat2 <- data.matrix(read.table(text="A B D E F
a 1 0 0 0 0
b 0 1 0 0 0
c 0 1 0 0 0
d 0 0 0 0 0
e 0 0 1 0 0", header = TRUE, row.names = 1))
假设您的所有矩阵都在一个列表中(如果没有,则创建一个)
mat.list <- list(mat1, mat2)
我们的第一步是将矩阵转换为 data.frames。这将使算法有效地利用内存:
df.list <- lapply(mat.list, as.data.frame)
我们编写一个函数来合并两个 data.frames:
cat.df <- function(d1, d2) {d1[names(d2)] <- d2; d1}
我们迭代地将所有 data.frame 合并为一个大 data.frame:
one.df <- Reduce(cat.df, df.list)
最后,我们将其转换为矩阵:
one.mat <- data.matrix(one.df)