在R中合并两个不同大小的矩阵

时间:2016-02-16 09:07:53

标签: r matrix merge

我已经看到了一些有关此问题的问题,但我无法理解任何答案,而且它们似乎都是封闭的线程。

我要做的是合并两个矩阵,这两个矩阵有一个公共列,但其他列不同,行号明显不同。我应该通过检查任何行是否具有匹配的公共列列值来合并两个矩阵。

例如:Matrix 1

Matrix 1
Col1 Col2 Col3 Col4
a     b    c    d
e     f    g    h
i     j    k    l

Matrix 2
Col1 Col5
a    e
g    f

在上面的例子中,矩阵1和第二行中的第一行在Col1和Col3中具有相同的条目,而第2行和第3行则不同。

我希望输出看起来如下:

NewMatrix
Col1 Col2 Col3 Col4 Col5
a     b   c    d    e
e     f   g    h    NA
i     j   k    l    NA
g     NA  NA    NA   f

这样匹配的行就会被连接起来,而任何不匹配的行都会被添加到最后。

有人会知道如何做到这一点吗?

1 个答案:

答案 0 :(得分:1)

矩阵可以与data.frame的类似地合并:

merge(matrix1, matrix2, all=TRUE) 
#  Col1 Col2 Col3 Col4 Col5
#1    a    b    c    d    e
#2    e    f    g    h <NA>
#3    i    j    k    l <NA>
#4    g <NA> <NA> <NA>    f

结果将是data.frame,但您始终可以将其转换回matrix