You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中如何将不同维度方阵合并为维度相加的新方阵

在R语言中合并两个不同维度的方阵

没问题,这在R里其实很容易实现,核心思路就是先创建一个对应大小的全零矩阵,再把两个原矩阵分别放到左上角和右下角的位置,还能保留原来的行名列名哦!

步骤示例(以你的小矩阵为例)

首先补全你给出的示例代码,定义好两个带行名列名的矩阵:

# 定义5x5的矩阵a
a <- matrix(sample(0:1, 25, replace=T), nrow=5, ncol=5)
rownames(a) <- letters[1:5]
colnames(a) <- letters[1:5]

# 定义4x4的矩阵b
b <- matrix(rep(0,16 ), nrow=4, ncol=4)
rownames(b) <- letters[6:9]
colnames(b) <- letters[6:9]

接下来按照以下步骤合并:

  1. 计算合并后大矩阵的总维度
  2. 创建全零的大矩阵,并设置好合并后的行名列名
  3. 将原矩阵填充到大矩阵的对应位置

具体代码如下:

# 计算总维度(因为是方阵,行数=列数)
total_dim <- nrow(a) + nrow(b)

# 创建全零大矩阵,同时合并行名和列名
combined_mat <- matrix(0, 
                       nrow = total_dim, 
                       ncol = total_dim,
                       dimnames = list(c(rownames(a), rownames(b)),
                                       c(colnames(a), colnames(b))))

# 将a填充到大矩阵的左上角
combined_mat[1:nrow(a), 1:ncol(a)] <- a

# 将b填充到大矩阵的右下角
combined_mat[(nrow(a)+1):total_dim, (ncol(a)+1):total_dim] <- b

执行完后,combined_mat就是你想要的9x9矩阵,a在左上角区域,b在右下角区域,其余位置都是0。

推广到你的实际场景(392×392和497×497矩阵)

如果你已经有了这两个大矩阵(假设分别叫mat392和mat497),直接套用上面的逻辑就行:

# 计算总维度:392+497=889
total_dim <- nrow(mat392) + nrow(mat497)

# 创建全零大矩阵(如果不需要行名列名可以去掉dimnames参数)
final_mat <- matrix(0, 
                    nrow = total_dim, 
                    ncol = total_dim,
                    dimnames = list(c(rownames(mat392), rownames(mat497)),
                                    c(colnames(mat392), colnames(mat497))))

# 填充两个原矩阵
final_mat[1:nrow(mat392), 1:ncol(mat392)] <- mat392
final_mat[(nrow(mat392)+1):total_dim, (ncol(mat392)+1):total_dim] <- mat497

这样就能得到你需要的889×889的矩阵啦!

内容的提问来源于stack exchange,提问作者ModalBro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:43:46