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

如何用R语言无放回抽样生成70行4列的指定元素矩阵?

解决无放回抽样生成70行4列矩阵的问题

你之前的代码问题在于一次性全局无放回抽取了70*4=280个元素,但我们只有4个唯一值,显然会提前耗尽元素,而且根本没法保证每行都是4个不同的元素。下面给你两种简单的解决方案:

方法一:直观的for循环

这种方式逻辑清晰,容易理解,适合刚接触R的朋友:

# 先初始化一个70行4列的空矩阵
result_matrix <- matrix(nrow = 70, ncol = 4)

# 循环70次,每次单独生成一行无放回抽样结果
for (i in 1:70) {
  result_matrix[i, ] <- sample(c("MU", "MG", "PU", "PG"), size = 4, replace = FALSE)
}

每次循环都从完整的4个元素里做无放回抽样,所以每行必然是4个不重复的元素,70次抽样相互独立。

方法二:更简洁的replicate函数

R里专门有处理重复任务的函数replicate(),用它可以一行搞定,更符合R的惯用写法:

# 重复70次抽样,转置后得到70行4列的矩阵
result_matrix <- t(replicate(70, sample(c("MU", "MG", "PU", "PG"), 4, replace = FALSE)))

replicate(70, ...)会执行70次抽样操作,每次返回一个长度为4的向量,默认会把这些向量组合成4行70列的矩阵,最后用t()转置成我们需要的70行4列结构。

验证结果

你可以用head()查看前几行,确认每行都是4个不重复的元素:

head(result_matrix)

输出示例:

[,1] [,2] [,3] [,4]
[1,] "MG" "PU" "MU" "PG"
[2,] "PU" "MG" "PG" "MU"
[3,] "MU" "PG" "MG" "PU"
[4,] "PG" "MU" "PU" "MG"
[5,] "MG" "MU" "PG" "PU"
[6,] "PU" "MU" "MG" "PG"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:40:02