R语言实现向量元素按n个为一组依次连续求和的方法
R语言向量固定长度分组求和实现方案
我们可以通过基础R函数实现通用的分组求和功能,无需依赖第三方包,同时支持自定义分组长度,适配不同长度的输入向量。
通用函数实现
方法1:基于tapply实现(兼容性好)
group_sum <- function(x, group_len) { # 生成分组标签,不足一组的元素自动归为最后一组 group_tags <- rep(1:ceiling(length(x)/group_len), each = group_len)[1:length(x)] # 按分组求和 as.vector(tapply(x, group_tags, sum, na.rm = TRUE)) }
方法2:基于rowsum实现(性能更优,适合长向量)
group_sum_fast <- function(x, group_len) { group_tags <- rep(1:ceiling(length(x)/group_len), each = group_len)[1:length(x)] as.vector(rowsum(x, group_tags)) }
效果测试
用示例向量测试效果如下:
# 测试用原始向量 vector <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) # 每2个为一组求和 group_sum(vector, 2) # 输出:[1] 3 7 11 15 19 23 # 每3个为一组求和 group_sum(vector, 3) # 输出:[1] 6 15 24 33
补充说明
如果输入向量长度不是分组长度的整数倍,函数会自动将剩余不足一组的元素作为最后一组求和;若需要丢弃不足一组的元素,把代码中的ceiling替换为floor即可。
内容的提问来源于stack exchange,提问作者Petas Zwegas
相关产品推荐
相关产品推荐

