我正在使用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")))
答案 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