假设我有一列数字如下:
Y=
1
2
3
4
5
6
34
32
23
Run Code Online (Sandbox Code Playgroud)
我有一个阵列 R1 = (1,3,7,8)
我想通过使用R1中定义的下标来实现添加Y的元素.我需要生成值的数组喜欢:选自Y开始数的总和[1]〜Y [3]作为我的第一元件,从Y [3]至Y [7]作为我的第二元件,和开始数的总和从Y [7]到Y [8]作为我的第三个元素,依此类推.
该embed函数对于构造此处所需的偏移量系列非常有用:
embed(R1,2)
[,1] [,2]
[1,] 3 1
[2,] 7 3
[3,] 8 7
# So this becomes a simple one-liner:
apply(embed(R1, 2) , 1, function(x) sum(Y[x[2]:x[1]]) )
#[1] 6 52 66
Run Code Online (Sandbox Code Playgroud)