m1:
a b c d e
x 0 0 0 0 0
y 0 0 0 0 0
x 0 0 0 0 0
m2:
y
a 1.2
c 1.5
e 1.4
这是我的代码;
for (i in 1:4){
if colnames(m1[i]) in rownanmes(m2[i])
m1["y", i] == m2[i]
}
到目前为止,我得到了这个矩阵,
a b c d e
x 0 0 0 0 0
y 1.2 1.5 1.4 NA NA
x 0 0 0 0 0
但我想创建这样的矩阵;
a b c d e
x 0 0 0 0 0
y 1.2 0 1.5 0 1.4
x 0 0 0 0 0
有什么建议吗?感谢
答案 0 :(得分:1)
另一个选择是:
indx <- Map(intersect, dimnames(t(m2)), dimnames(m1))
m1[indx[[1]], indx[[2]]] <- m2[indx[[2]], indx[[1]]]
m1
# a b c d e
#x 0.0 0 0.0 0 0.0
#y 1.2 0 1.5 0 1.4
#x 0.0 0 0.0 0 0.0
根据dput
的{{1}}输出(在评论中),m2
的colname是m2
,因为{{1}的rownames之间没有相交1}}和m2
的colname,当您使用代码时,它不会替换任何内容。
m1
m2