使用R合并矩阵和向量

时间:2012-03-19 14:27:26

标签: r vector matrix

我正在使用R而我在矩阵中合并向量时遇到了问题。

所以,基本上,这就是我所拥有的:

 A=
     ["A"] ["B"] ["C"] ["D"]
[1,]  0.2   0.1   0.2   0.8

B=
     ["A"] ["B"] ["E"] ["F"] ["G"]
[1,]  0.2   0.1   0.2    1    1.2

我希望我的结果是:

C =
     ["A"] ["B"] ["E"] ["F"] ["G"] ["C"] ["D"]
[1,]  0.2   0.1   0.2    0     0    0.2   0.8
[2,]  0.2   0.1   0.2    1    1.2    0     0    

(行顺序无关紧要)


dput(a)
structure(c(0.2, 0.1, 0.2, 0.8), .Dim = c(1L, 4L), .Dimnames = list(NULL, c("A", "B", "C", "D")))

dput(b)
structure(c(0.2, 0.1, 0.2, 1, 1.2), .Dim = c(1L, 5L), .Dimnames = list(NULL, c("A", "B", "E", "F", "G")))

2 个答案:

答案 0 :(得分:2)

您可以创建矩阵C,然后使用A和B中的值填充它:

C <- array(0, c(2,7), list(NULL, LETTERS[1:7]))
C[1, colnames(A)] <- A
C[2, colnames(B)] <- B

答案 1 :(得分:2)

plyr包有一个rbind.fill用于data.frames,rbind.fill.matrix用于矩阵:

library("plyr")
ab <- rbind.fill.matrix(a, b)
ab
#       A   B   C   D   E  F   G
# [1,] 0.2 0.1 0.2 0.8  NA NA  NA
# [2,] 0.2 0.1  NA  NA 0.2  1 1.2

正如您所看到的,缺少的值由NA填充,但您可以轻松地用零替换它们:

ab[is.na(ab)] <- 0
ab
#        A   B   C   D   E F   G
# [1,] 0.2 0.1 0.2 0.8 0.0 0 0.0
# [2,] 0.2 0.1 0.0 0.0 0.2 1 1.2
相关问题