You need to enable JavaScript to run this app. 如何从2个及以上矩阵的所有可能行组合创建新矩阵?
优惠活动
大模型
产品
解决方案
定价
更多

如何从2个及以上矩阵的所有可能行组合创建新矩阵?

两个矩阵场景的高效实现

你可以直接用R内置的expand.grid生成行索引的全组合,再通过矩阵索引拼接,全程是向量化操作,效率远高于手动循环:

# 初始化示例矩阵
A <- B <- diag(3)

# 生成两个矩阵行的所有组合索引
row_pairs <- expand.grid(A_row = 1:nrow(A), B_row = 1:nrow(B))
# 按索引取行后拼接
AB <- cbind(A[row_pairs$A_row, ], B[row_pairs$B_row, ])

运行后输出的AB和你给出的预期结果完全一致。

多矩阵场景的扩展

该方案完全可以扩展到任意多个矩阵的场景,你可以把逻辑封装成通用函数,输入任意数量的矩阵即可自动生成拼接结果:

# 通用多矩阵行全组合拼接函数
combine_all_row_pairs <- function(...) {
  input_mats <- list(...)
  # 校验输入全部为矩阵
  stopifnot(all(vapply(input_mats, is.matrix, logical(1))))
  # 生成所有矩阵的行索引全组合
  all_row_idx <- expand.grid(lapply(input_mats, function(mat) seq_len(nrow(mat))))
  # 按索引取行后拼接所有矩阵
  do.call(cbind, lapply(seq_along(input_mats), function(i) input_mats[[i]][all_row_idx[[i]], ]))
}

# 测试3个矩阵的场景
C <- diag(3)
ABC <- combine_all_row_pairs(A, B, C)

这个方案的性能优势很明显,因为expand.grid和矩阵索引都是R底层C语言实现的,就算矩阵行数较多、输入矩阵数量多,也能保持很高的运行效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 01:27:00