R语言实现生成满足指定取值条件的3x3矩阵所有排列列表
R语言生成指定规则的3x3矩阵全集实现方法
实现逻辑
- 第一行3个元素每个有3种取值(0/1/2),总共有
3^3=27种组合 - 第二行3个元素每个有2种取值(0/1),总共有
2^3=8种组合 - 第三行固定为全0,无变化
- 所有符合条件的矩阵总数量为
27*8=216,和估算结果一致
实现代码
# 生成第一行所有可能的组合 row1_combo <- expand.grid(pos1 = 0:2, pos2 = 0:2, pos3 = 0:2) # 生成第二行所有可能的组合 row2_combo <- expand.grid(pos1 = 0:1, pos2 = 0:1, pos3 = 0:1) # 生成两行的全量组合 full_combo <- merge(row1_combo, row2_combo, all = TRUE) # 初始化存储矩阵的列表 res_matrix <- vector("list", nrow(full_combo)) # 遍历生成所有矩阵 for (i in seq_len(nrow(full_combo))) { res_matrix[[i]] <- rbind( as.numeric(full_combo[i, 1:3]), as.numeric(full_combo[i, 4:6]), c(0, 0, 0) ) # 清除默认行名、列名,输出格式更符合需求 rownames(res_matrix[[i]]) <- NULL colnames(res_matrix[[i]]) <- NULL }
结果验证
运行length(res_matrix)可得到返回值为216,符合预期数量。
如需查看单个矩阵,直接索引列表即可,例如:
# 查看第100个符合条件的矩阵 print(res_matrix[[100]])
内容的提问来源于stack exchange,提问作者Lapinfouraide
相关产品推荐
相关产品推荐

