如何使用另一个矩阵的值填充空矩阵?
空矩阵:
> 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
修改:在m2中添加了行/列x
,这不在m1中
答案 0 :(得分:6)
找到两个矩阵共有的列(行)名称
cols <- colnames(m1)[colnames(m1) %in% colnames(m2)]
rows <- rownames(m1)[rownames(m1) %in% rownames(m2)]
然后将适当的值从m2
分配到m1
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