如何使用for循环、while循环、repeat循环计算采购金额列的平均值
三种循环计算采购金额平均值实现方案
我们以数据分析常用的R语言为例实现需求,R原生支持for、while、repeat三种循环语句,和需求匹配。
前置数据处理
首先从样例数据中提取采购金额列,生成数值向量供后续计算:purchase_amount <- c(682.23, 752.25, 6584.98)
三种循环实现代码及适用场景
1. for循环实现
for循环适合已知循环次数的场景,直接遍历序列内的所有元素即可,不需要手动维护计数变量:
# 初始化总和变量 total <- 0 # 遍历所有采购金额累加 for (amt in purchase_amount) { total <- total + amt } # 计算平均值 for_avg <- total / length(purchase_amount) print(paste("for循环计算结果:", round(for_avg, 2)))
适用场景:遍历列表、向量、数据框列等固定长度的序列时,写法最简洁不易出错
2. while循环实现
while循环的逻辑是先判断条件、再执行循环体,如果初始条件不满足,循环体一次都不会执行:
# 初始化总和、索引变量 total <- 0 index <- 1 count <- length(purchase_amount) # 索引小于等于总记录数时持续执行 while (index <= count) { total <- total + purchase_amount[index] index <- index + 1 } # 计算平均值 while_avg <- total / count print(paste("while循环计算结果:", round(while_avg, 2)))
适用场景:循环次数不固定、需要提前判断执行条件的场景,需要手动维护终止条件避免死循环
3. repeat循环实现
repeat循环的逻辑是先执行循环体、再判断终止条件,循环体至少会执行一次,需要配合break语句跳出循环:
# 初始化总和、索引变量 total <- 0 index <- 1 count <- length(purchase_amount) repeat { total <- total + purchase_amount[index] index <- index + 1 # 索引超过总记录数时跳出循环 if (index > count) { break } } # 计算平均值 repeat_avg <- total / count print(paste("repeat循环计算结果:", round(repeat_avg, 2)))
适用场景:需要至少执行一次循环体的业务场景,必须显式设置break条件否则会进入死循环
结果验证
本次样例数据的采购金额总和为8019.46,平均值约为2673.15,三种循环的计算结果完全一致。
内容的提问来源于stack exchange,提问作者Actros M
相关产品推荐
相关产品推荐

