2012-06-17 103 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

忽略,就像我的問題的結果矩陣。 –