gpt4 book ai didi

r - 向量化 R 循环以对向量部分求和

转载 作者:行者123 更新时间:2023-12-04 11:26:56 25 4
gpt4 key购买 nike

我想对向量的某些部分求和。这些部分的长度由另一个向量给出,比如 L = c(3,4)。其元素应相加的向量是 vec = c(3,4,2,6,5,8,1)length(vec) = sum(L)。结果我想要一个向量 sigma 包含 sum(vec[1:L[1]])sum(vec[(L [1]+1):L[2]]) 或在本例中为 sum(vec[1:3])sum(vec[4:7]) 。在这个小例子中,解决方案是:sigma[1] = 3+4+2 = 9sigma[2] = 6+5+8+1 = 20 .请注意,这只是一个小例子,通常 Lvec 有更多的元素。

我想快速解决我的问题。可能是通过我的以下循环的矢量化来实现的:

L = c(3,4)       #length of sections
vec = c(3,4,2,6,5,8,1) #creating vector for summation
L_cum = c(0,cumsum(L)) #creating vector for the length of sections with needed indices
sigma = 0
for(i in 1:length(L)){
sigma[i] = sum(vec[(L_cum[i]+1):L_cum[i+1]]) #summation over vec[1:3] and vec[4:7]
}

最佳答案

这也应该有效

diff(c(0,cumsum(vec)[cumsum(L)]))

关于r - 向量化 R 循环以对向量部分求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31430547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com