合并矩阵和向量使用R
问题描述:
我正在使用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")))
答
的plyr
包具有用于data.frames为矩阵A rbind.fill
和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
+0
哦,该死的,我没有得到任何数据框架,也不知道存在矩阵的方法。很好找! – 2012-03-20 08:49:31
+0
完美的作品,谢谢^^ – user1278743 2012-03-21 12:25:22
答
您可以创建矩阵C,然后用值填充它米A和B:
C <- array(0, c(2,7), list(NULL, LETTERS[1:7]))
C[1, colnames(A)] <- A
C[2, colnames(B)] <- B
请阅读http://*.com/questions/5963269/how-to-make-a-great-r-reproducible-example,然后提供我们有一些可重复的数据。目前还不清楚数据的真实结构,即矢量或矩阵。简而言之:将'dput(A)'和dput('B')的结果粘贴到你的问题中。 – Andrie 2012-03-19 14:35:02
对不起,这里是你要求的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