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

如何在R中用lapply实现按账户的乘法型时间序列分解?

解决方案

正确简洁的乘法型时间序列分解代码

直接在lapply中为decompose传递type参数即可,这是lapply传递额外参数的标准用法:

tss <- tapply(data$sales, data$account, ts, start = c(2021, 5), frequency = 4)
dcs <- lapply(tss, decompose, type = "multiplicative")

错误写法分析

  1. 你尝试的lapply(tss, decompose(type = "multiplicative"))无法运行,原因是lapply的第二个参数需要是函数对象,而非函数调用的结果。正确方式是将decompose作为函数传入,后续参数直接跟在后面,lapply会自动把tss中的每个时间序列作为第一个参数传给decompose,同时带上type参数。

  2. 另一种方案lapply(names(tss), function(x) {decompose(tss[, x], type = "additive")})的问题:

    • tss是列表结构,不是矩阵或数据框,不能用tss[, x]的索引方式,应使用列表索引tss[[x]]
    • 即便修正索引,这种遍历名称的写法也不如直接遍历tss元素简洁高效

结果验证

运行正确代码后,dcs会成为一个列表,每个元素对应一个账户的乘法型分解结果,包含trend(趋势)、seasonal(季节)、random(随机)等分量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:27:05