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

R语言列表元素滚动求和:lapply与Reduce使用问题求助

问题分析与解决

首先,你的代码核心问题是索引计算的运算符优先级错误:R中:的优先级高于-,所以i-2:i会被解析为i - (2:i),而非你预期的(i-2):i。比如当i=3时,2:i是c(2,3),i-2:i就变成3 - c(2,3) = c(1,0),R中索引0会返回NA,自然得不到正确结果。

修正后的代码

只需给索引范围加上括号,确保先计算起始位置i-2,再生成连续的索引序列:

thr2 <- list(1,2,3,4,5)
thr3 <- lapply(seq(3,5), function(i) Reduce("+", thr2[(i-2):i]))

运行后thr3会得到预期的[[1]]=6、[[2]]=9、[[3]]=12。

更高效的替代方案(针对数值列表)

因为你的列表元素都是单个数值,先转成向量再计算滚动和会更简洁高效:

vec <- unlist(thr2)
thr3 <- lapply(seq_len(length(vec)-2), function(j) sum(vec[j:(j+2)]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:15:27