2012-03-19 173 views
2

我正在使用R和我有合并向量矩阵中的问题。合并矩阵和向量使用R

所以,basicaly,这里是我有:

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

请阅读http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example,然后提供我们有一些可重复的数据。目前还不清楚数据的真实结构,即矢量或矩阵。简而言之:将'dput(A)'和dput('B')的结果粘贴到你的问题中。 – Andrie 2012-03-19 14:35:02

+0

对不起,这里是你要求的dput()。结构(c(0.2,0.1,0.2,0.8),.Dim = c(1L,4L),.Dimnames = list(NULL,c(“A”,“B”,“ (c,0.2,0.1,0.2,1,1.2),.Dim = c(1L,5L),.Dimnames = list(NULL, c(“A”,“B”,“E”,“F”,“G”))) – user1278743 2012-03-19 14:47:36

回答

2

plyr包具有用于data.frames为矩阵A rbind.fillrbind.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 
+0

哦,该死的,我没有得到任何数据框架,也不知道存在矩阵的方法。很好找! – 2012-03-20 08:49:31

+0

完美的作品,谢谢^^ – user1278743 2012-03-21 12:25:22

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