R中使用ties.method = random排名时如何固定随机结果保证可复现
R语言固定随机排名结果解决方案
ties.method = "random"参数处理并列值时会调用R的随机数生成器,因此每次运行结果会发生变化。要保证所有同事运行同一份代码得到完全一致的结果,只需要在运行排名逻辑前设置固定的随机种子即可。
修改后的代码示例:
# 传入任意固定数值作为随机种子,全团队使用同一数值即可 set.seed(4321) Data2 <- Data1 %>% group_by(Target) %>% mutate(myRank = rank(desc(nTimes), ties.method = "random")) %>% ungroup()
注意事项:
set.seed()的入参数值可自定义,只要所有运行该代码的环境使用相同的入参,就能得到完全一致的排名结果set.seed()设置的种子会作用于后续所有随机数调用,若要避免该种子影响代码中其他依赖随机数的逻辑,可以在排名代码运行完成后执行rm(.Random.seed, envir = globalenv())重置随机数状态- 若使用dplyr的分组运算逻辑,不需要额外调整分组规则,统一设置相同随机种子即可保证各组内的随机排序结果完全一致
- 建议团队统一使用相近的R版本,避免不同版本间随机数生成器底层逻辑变化导致结果差异
内容的提问来源于stack exchange,提问作者Ajrhjnd
相关产品推荐
相关产品推荐

