2012-06-17 206 views
1

如何用另一个矩阵的值填充空矩阵?如何用R中另一个矩阵的值填充矩阵?

空矩阵:

> m1 <- matrix(ncol=8, nrow=8) 
> rownames(m1) <- c('a','b','c','d','e','f','g','h') 
> colnames(m1) <- c('a','b','c','d','e','f','g','h') 
> m1 
    a b c d e f g h 
a NA NA NA NA NA NA NA NA 
b NA NA NA NA NA NA NA NA 
c NA NA NA NA NA NA NA NA 
d NA NA NA NA NA NA NA NA 
e NA NA NA NA NA NA NA NA 
f NA NA NA NA NA NA NA NA 
g NA NA NA NA NA NA NA NA 
h NA NA NA NA NA NA NA NA 

与价值矩阵来填充空矩阵:

> m2 <- matrix(ncol=4, nrow=4) 
> rownames(m2) <- c('b','e','h','x') 
> colnames(m2) <- c('b','e','h','x') 
> m2[,'b'] <- c(1,2,3,1) 
> m2[,'e'] <- c(2,1,1,5) 
> m2[,'h'] <- c(3,1,3,5) 
> m2[,'x'] <- c(1,5,5,1) 
> m2 
    b e h x 
b 1 2 3 1 
e 2 1 1 5 
h 3 1 3 5 
x 1 5 5 1 

你如何合并两个矩阵来得到这样的结果:

a b c d e f g h 
a NA NA NA NA NA NA NA NA 
b NA 1 NA NA 2 NA NA 3 
c NA NA NA NA NA NA NA NA 
d NA NA NA NA NA NA NA NA 
e NA 2 NA NA 1 NA NA 1 
f NA NA NA NA NA NA NA NA 
g NA NA NA NA NA NA NA NA 
h NA 3 NA NA 1 NA NA 3 

编辑:添加的行/列x在平方米,这不是在M1

回答

4

查找两个矩阵的共同点

cols <- colnames(m1)[colnames(m1) %in% colnames(m2)] 
rows <- rownames(m1)[rownames(m1) %in% rownames(m2)] 

然后分配适当的值从m2m1

m1[rows, cols] <- m2[rows, cols] 
m1 
# a b c d e f g h 
#a NA NA NA NA NA NA NA NA 
#b NA 1 NA NA 2 NA NA 3 
#c NA NA NA NA NA NA NA NA 
#d NA NA NA NA NA NA NA NA 
#e NA 2 NA NA 1 NA NA 1 
#f NA NA NA NA NA NA NA NA 
#g NA NA NA NA NA NA NA NA 
#h NA 3 NA NA 1 NA NA 3 
+0

我编辑列(行)的名称我的问题。用m中的'x',R给我一个“索引越界”的错误。 –

+0

你想让'x'被忽略,还是你想'm1'获得一个名为'x'的行和列? – GSee

+0

忽略,就像我的问题的结果矩阵。 –