在R中如何从列表轻松生成多个累计求和新变量
R 不等长列表元素批量生成累计和实现方案
方法1:for 循环实现
核心逻辑是遍历列表的每个元素名,批量计算累计和后按要求命名存入原列表:
# 遍历所有App的名称 for (app_nm in names(apps)) { # 按要求生成新变量名 new_nm <- paste0(app_nm, "_cum") # 计算累计和并存入列表 apps[[new_nm]] <- cumsum(apps[[app_nm]]) }
执行后可直接通过apps$App1_cum调取对应App的累计求和结果,所有向量长度和原对应App的下载量向量完全一致,列表结构保持不变。
方法2:向量化批量处理(更简洁,无需显式循环)
用lapply批量计算所有元素的累计和,重命名后合并到原列表即可:
# 批量计算所有App的累计和 cum_res <- lapply(apps, cumsum) # 重命名累计和结果的元素名 names(cum_res) <- paste0(names(cum_res), "_cum") # 合并原数据和累计和结果,保持列表结构 apps <- c(apps, cum_res)
内容的提问来源于stack exchange,提问作者user12973342
相关产品推荐
相关产品推荐

