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

如何在R语言中固定全局随机化结果?以iris数据集训练集抽取为例

解决R语言中固定iris数据集随机打乱结果的问题

嘿,这个问题我太熟了!在处理随机化数据时每次结果不一样,核心原因是R默认会使用不同的伪随机数种子来生成随机序列。要固定结果,只需要手动设置一个固定的随机数种子就行,我给你一步步演示怎么操作:

为什么每次随机顺序不同?

R里的“随机数”其实是伪随机数——它是基于一个初始的“种子”值通过算法生成的序列。每次你重启R或者重新运行代码时,R会自动选择一个新的种子,所以生成的随机顺序自然就不一样了。

固定随机结果的具体步骤

只需要在生成随机顺序的代码前调用set.seed()函数,传入一个固定的整数(数字随便选,只要每次都用同一个就行)。下面是针对iris数据集的完整示例:

# 加载iris数据集
data(iris)

# 关键步骤:设置固定的随机数种子
set.seed(123)  # 这里的数字可以换成42、789等任意你喜欢的整数

# 随机打乱数据集的行
shuffled_iris <- iris[sample(nrow(iris)), ]

# 计算80%数据对应的行数
train_size <- floor(0.8 * nrow(iris))

# 拆分训练集和测试集
train_data <- shuffled_iris[1:train_size, ]
test_data <- shuffled_iris[(train_size + 1):nrow(iris), ]

额外说明

  • 只要每次运行代码时都先执行同一个set.seed(),那么sample()生成的随机打乱顺序就会完全一致,拆分出的训练集/测试集也会一模一样。
  • 如果你整个程序里还有其他需要固定随机结果的操作(比如交叉验证的随机分组),把set.seed()放在程序的最开头就行,它会影响之后所有的随机数生成操作。
  • 不同的种子数字会对应不同的随机序列,但只要固定数字,结果就固定——比如你用set.seed(42),每次得到的打乱顺序都是同一个。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:20:44