Str*_*erg 3 for-loop r vectorization
我想总结一下矢量的某些部分.这些部分的长度由另一个向量给出,比方说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 = 9和sigma[2] = 6+5+8+1 = 20.请注意,这只是一个小例子,通常,L并vec有更多的元素.
我想快速解决我的问题.可能通过我的以下循环的矢量化达到:
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]
}
Run Code Online (Sandbox Code Playgroud)