如何使用sample_frac在循环中每次生成相同的随机样本?
解决方法
要实现每次循环调用采样函数得到完全相同的随机样本,核心逻辑是固定每次采样时的随机种子:R的随机数生成结果由当前随机种子决定,只要每次采样前将种子设置为同一个固定值,就能得到完全一致的随机输出。
修改后代码
library(dplyr) tbl = tibble(val = 1:50) for (i in 1:3) { # 每次采样前设置相同的固定随机种子,参数可自定义为任意整数,固定即可 set.seed(123) tbl_sample = tbl %>% sample_frac(0.1) print(tbl_sample) }
补充说明
set.seed()的入参可以替换为任意整数,只要保证每次循环调用时参数值固定,就能实现三次采样结果完全一致。- 如果你使用的是dplyr 1.0.0及以上版本,
sample_frac()已被软弃用,更推荐使用slice_sample()函数实现相同的按比例采样功能,写法为:tbl %>% slice_sample(prop = 0.1)。
内容的提问来源于stack exchange,提问作者SiH
相关产品推荐
相关产品推荐

