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

R中如何将数据框growth变量传入accumulate函数替换固定增长率参数

解决方案

要实现迭代时动态调用数据框内的growth列参数,使用purrr::accumulate2()替代原单序列遍历的accumulate()即可,该函数支持同时传入两个序列进行迭代,刚好匹配你的需求。

完整可运行代码如下:

library(dplyr)
library(purrr)

# 原数据生成逻辑不变
x <- tibble(a = c(1:10),
            b = c(seq(100, 140, 10), rep(NA_real_, 5)) )
x$growth = runif(10, 0.001, 0.09)

# 自定义填充函数无需修改
fill_in <- function(prev, new, growth = 0.03) {
  if_else(!is.na(new), new, prev * (1 + growth))
}

# 仅修改accumulate调用部分
x <- x %>%
  mutate(b = accumulate2(b, growth[-1], fill_in, .init = first(b)) %>% tail(-1))

修改说明

  • accumulate2的第一个参数为需要填充的b列,第二个参数为growth[-1]:由于第一行的b值不需要依赖前序计算结果,所以去掉growth列的第一个值,保证第二个序列长度比第一个序列少1,符合accumulate2的参数要求
  • .init = first(b)指定迭代的初始值为b列的第一个有效值
  • tail(-1)用来去掉返回结果中自带的初始值,保证最终结果长度和原数据行数一致

运行后填充NA值时会自动调用对应行的growth列数值,不再使用固定的0.03默认值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:39:03