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

R语言构造满足行列约束的100*4 0-1矩阵的实现方法

R语言生成符合约束的0-1矩阵实现方案

你的需求本质等价于生成一个长度为100、取值为1-4的整数向量,要求每个取值出现次数≥2,再将该向量转换为独热矩阵即可同时满足两个约束,不需要复杂的参数配置,两种常用实现方式如下:

Base R无依赖实现

无需加载任何第三方包,直接生成稠密矩阵:

# 生成满足每列至少2个1的列索引
# 先为每列分配最低2个计数
min_col_assign <- rep(1:4, each = 2)
# 剩余92个位置随机分配列
rest_col_assign <- sample(1:4, size = 92, replace = TRUE)
# 打乱索引顺序保证随机性
col_index <- sample(c(min_col_assign, rest_col_assign))

# 构造0-1矩阵
MyMat <- matrix(0, nrow = 100, ncol = 4)
# 按行列索引赋值为1
MyMat[cbind(1:100, col_index)] <- 1

基于rsparsematrix的实现

适配你之前的代码写法,适合需要稀疏矩阵的场景:

library(Matrix)
# 沿用上面生成的col_index构造稀疏矩阵
MyMat_sparse <- rsparsematrix(
  nrow = 100,
  ncol = 4,
  i = 1:100,
  j = col_index,
  x = rep(1, 100)
)
# 如需转为稠密矩阵再执行as.matrix
MyMat <- as.matrix(MyMat_sparse)

约束验证

可以通过以下代码验证生成的矩阵是否符合要求:

# 验证每行仅有1个1
all(rowSums(MyMat) == 1)
# 验证每列至少有2个1
all(colSums(MyMat) >= 2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:06:05