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

如何在R语言中不使用for循环为数据框添加累积均值列?

不用for循环给R数据框添加累积均值列

直接用向量化操作是最省心也最高效的办法,不用循环也不用map,靠cumsum()就能搞定:

# 测试数据
a = data.frame(
  n = c(1:10),
  Xn = c(-0.502,0.132,-0.079,0.887,0.117,0.319,-0.582,0.715,-0.825,-0.360)
)

# 一行代码生成累积均值列
a$Xn_bar <- cumsum(a$Xn) / seq_along(a$Xn)

要是你一定要用purrr的map系列函数(本质是封装了循环的隐式写法),也能实现:

library(purrr)

# 用map_dbl返回数值向量,直接赋值为新列
a$Xn_bar <- map_dbl(seq_len(nrow(a)), ~mean(a$Xn[1:.x]))

结果核对

两种方法和你原来的for循环结果完全一致,比如前三个值的累积均值:

  • 第1个:-0.502
  • 第2个:(-0.502+0.132)/2 = -0.185
  • 第3个:(-0.502+0.132-0.079)/3 ≈ -0.1497

效率提醒

向量化的cumsum方法比循环、map快得多,数据量越大差距越明显——毕竟R的向量化操作是底层优化过的,没有循环带来的额外开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:35:17