R语言实现两次掷骰子求和:合并输出或分组存储结果的问题
解决R语言两次掷骰子点数求和的输出问题
问题说明
需要实现两次掷骰子的点数求和,达成两个输出目标:
- 目标1:将所有求和结果合并为一个单一向量输出(预期结果:
2 3 4 5 6 7 3 4 5 6 7 8 4 5 6 7 8 9 5 6 7 8 9 10 6 7 8 9 10 11 7 8 9 10 11 12) - 目标2:将每组第一次掷骰子对应的求和结果分别存储为
outcome1、outcome2…outcome6(例如outcome1 = c(2,3,4,5,6,7),outcome2 = c(3,4,5,6,7,8)等)
现有代码的问题:使用outcomes(i)的赋值方式不符合R语法,无法正确创建分组变量,且循环内直接print导致结果分散输出。
解决方案代码
# 定义骰子点数 dice <- 1:6 # 初始化列表存储所有分组结果(便于后续合并操作) outcome_list <- list() # 循环处理每个骰子点数 for (i in seq_along(dice)) { # 计算当前点数与第二次掷骰子的求和结果 current_outcome <- dice[i] + 1:6 # 目标2:动态创建outcome1到outcome6独立变量 assign(paste0("outcome", i), current_outcome) # 将结果存入列表,用于后续合并 outcome_list[[i]] <- current_outcome } # 目标1:合并所有结果为单一向量 all_outcomes <- unlist(outcome_list) # 输出合并后的结果 print(all_outcomes) # 验证分组变量(示例:查看outcome1) print(outcome1)
代码解释
- 分组变量创建:使用
*assign()*函数配合*paste0()*动态生成outcome1到outcome6,paste0负责拼接变量名,assign完成结果赋值。 - 合并结果:先通过列表统一存储所有分组结果,再用
*unlist()*将列表转换为单一向量,得到合并后的所有求和结果。 - 优化建议:如果不需要独立变量,直接使用列表
outcome_list管理分组结果会更便于后续统计、修改等操作,比分散的独立变量更灵活。
内容的提问来源于stack exchange,提问作者KellyF
相关产品推荐
相关产品推荐

