如何使用基于列/行名称的另一个矩阵替换矩阵中的值?

时间:2014-05-22 15:14:50

标签: r matrix replace

我有一个小矩阵:

SMALL<-matrix(c(1:9),3, 3)
colnames(SMALL)<-c("25","36","48")
rownames(SMALL)<-c("18","25","48")

看起来像:

   25 36 48
18  1  4  7
25  2  5  8
48  3  6  9

一个大矩阵:

LARGE<-matrix(0,4, 4)
colnames(LARGE)<-c("12","25","36","48")
rownames(LARGE)<-c("18","25","38","48")

看起来像:

   12 25 36 48
18  0  0  0  0
25  0  0  0  0
38  0  0  0  0
48  0  0  0  0

我想用基于列/行名称的小矩阵替换大矩阵中的值。

寻找这个结果:

   12 25 36 48
18  0  1  4  7
25  0  2  5  8
38  0  0  0  0
48  0  3  6  9

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

假设SMALLLARGE的每个列号和行名称都匹配:

i <- match(rownames(SMALL), rownames(LARGE))
j <- match(colnames(SMALL), colnames(LARGE))

LARGE[i,j] <- SMALL
#   12 25 36 48
#18  0  1  4  7
#25  0  2  5  8
#38  0  0  0  0
#48  0  3  6  9