如何在R语言中不使用for循环实现向量迭代累加
更优的累加向量实现方案
你用for循环的方式虽然能实现需求,但每次通过c(sums, s)扩展向量时,都会重新分配内存,数据量大的时候效率会很低。R里有专门的内置函数可以直接搞定这个需求:
直接用cumsum()函数,一行代码就能生成累加向量:
vector <- c(1,2,3) sums <- cumsum(vector)
运行后sums就是[1, 3, 6],完全符合你的要求。
这个函数是R底层优化的向量化操作,不需要手动循环,不仅代码简洁,处理大数据量时的执行效率比for循环高很多。
如果想手动实现类似逻辑(仅作理解,不推荐实际使用),也可以预先分配好向量空间再填充,避免频繁内存分配,比如:
vector <- c(1,2,3) sums <- numeric(length(vector)) current_sum <- 0 for (i in seq_along(vector)) { current_sum <- current_sum + vector[i] sums[i] <- current_sum }
但显然cumsum()是最省心高效的选择。
内容的提问来源于stack exchange,提问作者asc
相关产品推荐
相关产品推荐

