r - 在 R 中粘贴矩阵

标签 r matrix

我有一个关于粘贴矩阵的问题。我有一组 10 个矩阵,它们具有相同的行名但不同的列名,例如

矩阵 1:

   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

矩阵 2:

  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

我想将两个矩阵格式化为

  A B C D E F
a 1 0 0 0 0 0
b 0 1 0 0 0 0
c 0 1 0 0 0 0
d 0 0 1 0 0 0
e 0 0 0 1 0 0

如何在不循环的情况下在 R 中快速完成? 谢谢!

最佳答案

示例数据:

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.frames 到一个大 data.frame 中:

one.df <- Reduce(cat.df, df.list)

最后,我们将其转换为矩阵:

one.mat <- data.matrix(one.df)

关于r - 在 R 中粘贴矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25785605/

相关文章:

r - 如何在 r 中的字符向量上对步骤 2 的滑动窗口进行排序

r - ggplot2 绘图 : Change Text in Case it Exceeds the Plot Window when Exporting as PNG

r - 从源加载脚本时,无效的多字节字符崩溃(元音变音/特殊字符)

android - 无法缩放或翻转 surfaceview 矩阵

javascript - 基于4x4矩阵计算canvas context.setTransform矩阵

python - 混合 numpy 矩阵和数组的危险

r - 在 R 中找出 PDF 的编码

r - 从函数环境运行时,R 的 `polr` 函数是否存在潜在错误?

haskell - 将函数应用于矩阵的每个元素

c++ - 旋转NxN矩阵计数器(逆时针90度