【问题标题】:Combining 2 square matrices into another square matrix with all elements in R将 2 个方阵组合成另一个方阵,其中包含 R 中的所有元素
【发布时间】:2018-05-06 21:52:55
【问题描述】:

我试图将两个不同维度的方阵组合成一个方阵,其维度是原始两个方阵的总和。我有一个 392 x 392 的矩阵和另一个 497 x 497 的矩阵。我想要的是 889 x 889 的第三个矩阵。

例如,如果我有矩阵 a 和矩阵 b,如下所述:

a <- matrix(sample(0:1, 25, replace=T), nrow=5, ncol=5)
b <- matrix(rep(0,16 ), nrow=4, ncol=4)
rownames(a) <- letters[1:5]
colnames(a) <- letters[1:5]
rownames(b) <- letters[6:9]
colnames(b) <- letters[6:9]

如何得到如下所示的矩阵 c:

{c <- matrix(c(0,1,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), nrow=10,ncol=10)

我已经尝试了 gdata 包中的 cbindX 以及该站点中的其他一些解决方案,但没有任何效果。任何帮助表示赞赏!

【问题讨论】:

  • “我有一个 392 x 392 的矩阵和另一个 497 x 497 的矩阵。我想要的是 889 x 889 的第三个矩阵” 呃,什么?我不明白你想如何实现这一目标。如果尺寸匹配,您可以列绑定或行绑定条目。你能用一个最小的例子澄清一下吗?
  • 不够清楚...你想把两个方阵放在对角线上然后周围为零吗?
  • 糟糕,抱歉,我在制作可重复的示例之前先发帖。我会解决这个问题。

标签: r matrix sparse-matrix


【解决方案1】:

如果我真的理解这个问题...... 使用这个:

C <- Matrix::bdiag(a, b) %>% 
        as.matrix

此命令将创建一个块对角矩阵

【讨论】:

  • 这是完美的,除了有什么方法可以保留列名和行名吗?编辑:没关系,我想出了一个解决方法。
  • 我很高兴有帮助! :D
猜你喜欢
  • 2018-08-01
  • 1970-01-01
  • 2018-09-07
  • 2014-03-20
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
相关资源
最近更新 更多