楼主: 一诺9257
2425 1

[问答] 怎么合并矩阵 [推广有奖]

  • 10关注
  • 7粉丝

教授

66%

还不是VIP/贵宾

-

威望
0
论坛币
23 个
通用积分
3.8021
学术水平
28 点
热心指数
34 点
信用等级
17 点
经验
301 点
帖子
949
精华
0
在线时间
1321 小时
注册时间
2010-3-21
最后登录
2020-2-22

楼主
一诺9257 发表于 2013-11-5 16:32:41 |AI写论文
10论坛币
问题:已知矩阵aa和bb,怎么可以得到cc? 也即是怎么按照矩阵的行名字将两个或多个矩阵进行合并。谢谢

aa=matrix(c(1,2,3),nrow=3,ncol=1)
rownames(aa)=c("x1","x2","x5")
aa

bb=matrix(c(11,12,17,5),nrow=4,ncol=1)
rownames(bb)=c("x1","x3","x4","x5")
bb

cc=matrix(c(1,2,0,0,3,11,0,12,17,5),nrow=5,ncol=2)
rownames(cc)=c("x1","x2","x3","x4","x5")
cc


矩阵具体形式
> aa#####解释aa矩阵行名只有x1,x2,x5
   [,1]
x1    1
x2    2
x5    3
> bb解释bb矩阵行名只有x1,x3,x4,x5
   [,1]
x1   11
x3   12
x4   17
x5    5
> cc解释cc矩阵是将aa和bb矩阵合并,行名是x1:x5,第一列是aa矩阵元素(aa矩阵没有的赋值为0),第二列是bb矩阵元素
   [,1] [,2]
x1    1   11
x2    2    0
x3    0   12
x4    0   17
x5    3    5

关键词:matrix Names name 矩阵元素 Mat matrix

沙发
yywan0913 在职认证  发表于 2013-11-5 16:32:42
  1. aa=matrix(c(1,2,3),nrow=3,ncol=1)
  2. rownames(aa)=c("x1","x2","x5")
  3. aa
  4. bb=matrix(c(11,12,17,5),nrow=4,ncol=1)
  5. rownames(bb)=c("x1","x3","x4","x5")
  6. #bb=data.table(bb)
  7. bb
  8. x=sort(union(rownames(aa),rownames(bb)))
  9. a=setdiff(x,rownames(aa))
  10. a1=which(x%in%a);a2=which(x%in%rownames(aa))
  11. aa[a2]=aa;aa[a1]=0
  12. aa
  13. b=setdiff(x,rownames(bb))
  14. b1=which(x%in%b);b2=which(x%in%rownames(bb))
  15. bb[b2]=bb;bb[b1]=0
  16. bb
  17. cc=data.frame(aa,bb)
  18. rownames(cc)=x
  19. cc
复制代码
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
qoiqpwqr + 1 热心帮助其他会员
一诺9257 + 5 + 5 + 5 谢谢

总评分: 学术水平 + 5  热心指数 + 6  信用等级 + 5   查看全部评分

是什么给了你自信

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-29 11:11