首页 > 解决方案 > R - 在向量中创建特定元素的总和

问题描述

假设我有一个向量

v1 <- sample(1:100, 100) 

并希望在定义了下标和上标的不同区间内获得总和

lower_bound <- c(4,28,56,74)
upper_bound <- c(24,33,86,98)

所以基本上,我想要

all_sums <- c(sum(v1[4:24]), sum(v1[28:33]), sum(v1[56:86]),sum(v1[74:98]))  

我可以使用循环,但肯定有更漂亮的解决方案。有人有线索吗?提前谢谢了。

标签: r

解决方案


您可以使用mapply

mapply(function(i, j) sum(v1[i:j]), lower_bound, upper_bound)
#[1]  962  340 1586 1340

c(sum(v1[4:24]), sum(v1[28:33]), sum(v1[56:86]),sum(v1[74:98]))
#[1]  962  340 1586 1340

数据:

set.seed(42)
v1 <- sample(1:100, 100)

推荐阅读