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

R-o*_*ert 2 r matrix

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

空矩阵:

> 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
Run Code Online (Sandbox Code Playgroud)

具有填充空矩阵的值的矩阵:

> 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
Run Code Online (Sandbox Code Playgroud)

如何合并这两个矩阵以获得此结果:

   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
Run Code Online (Sandbox Code Playgroud)

编辑:x以m2为单位添加行/列,不在m1中

GSe*_*See 6

找到两个矩阵共有的列(行)名称

cols <- colnames(m1)[colnames(m1) %in% colnames(m2)]
rows <- rownames(m1)[rownames(m1) %in% rownames(m2)]
Run Code Online (Sandbox Code Playgroud)

然后从分配相应的值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
Run Code Online (Sandbox Code Playgroud)