2012-03-19 6 views
2

저는 R을 사용하고 있는데 행렬에 벡터를 병합하는 데 문제가 있습니다.행렬과 벡터를 병합하는 방법 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 

그리고 내 결과가되고 싶어요 :

것은 그래서, basicaly, 여기에 내가 무엇을 가지고

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

+0

죄송합니다. 다음은 요청하신 dput()입니다. dput (a) = 구조체 (c (0.2, 0.1, 0.2, 0.8), .Dim = c (1L, 4L), .Dimnames = list (NULL, c ("A", "B" C, D))) dput (b) = 구조체 (c (0.2, 0.1, 0.2, 1, 1.2), .Dim = c (1L, 5L), .Dimnames = list (NULL, ("A", "B", "E", "F", "G"))) – user1278743

답변

2

plyr 패키지는 행렬의 data.frames에 대한 rbind.fillrbind.fill.matrix있다 : 당신이 볼 수 있듯이, 누락 된 값이 NA로 가득

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 

을하지만 당신은 쉽게 교체 할 수 있습니다 0을 포함한 숫자 :

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

오, 젠장, 나는 아무데도 data.frame을 가지고 있지 않았다. 좋은 발견! –

+0

완벽하게 작동합니다. 감사합니다. ^^ – user1278743

2

매트릭스 C를 생성 한 다음 값을 다음과 같이 채울 수 있습니다. m A와 B는 :

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