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

如何用R语言为600×20矩阵每行设1个1且每列至少含1个1?

实现方法

要构造满足要求的矩阵,核心思路是先保证每列至少有一个1,再给剩余行随机分配列索引,具体步骤如下:

步骤1:初始化全0矩阵

先创建指定尺寸的全0矩阵:

Chickens <- matrix(0, 600, 20)

步骤2:生成符合要求的列索引向量

我们需要一个长度为600的列索引向量,其中1到20每个数字至少出现一次:

  • 先生成基础列索引,确保每列占一个位置:base_cols <- 1:20
  • 对剩余的580个位置,随机从20列中重复抽样:rand_cols <- sample(1:20, 580, replace = TRUE)
  • 合并并打乱顺序,避免前20行固定对应1-20列,保证行的分配随机性:
all_cols <- c(base_cols, rand_cols)
all_cols <- sample(all_cols)

步骤3:为矩阵填充1

利用行列索引对,把对应位置设为1:

Chickens[cbind(1:600, all_cols)] <- 1

验证结果

可以用以下代码验证是否符合要求:

  • 检查每行1的数量:rowSums(Chickens) 结果应全为1
  • 检查每列1的数量:colSums(Chickens) 结果应都≥1
  • 检查总1的数量:sum(Chickens) 结果应为600

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:13:07