2012-03-19 165 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