R - 条件递增

Zhu*_*arb 2 r apply dataframe

这对于代码来说应该是微不足道的,但是却无法想到R中的优雅单线程.我有一个如下数据帧:

data <- data.frame( index= seq(1:20), event=rep(0,20)   )
data$event[10] <- 1
data$event[15] <- 1
Run Code Online (Sandbox Code Playgroud)

我只是想添加startstop计数在10中递增的列,并在event=1观察到后立即重置.因此,这两个附加列的所需输出将是:

  index event start stop
1   1    0     0    10
2   2    0    10    20
3   3    0    20    30
4   4    0    30    40
5   5    0    40    50
6   6    0    50    60
7   7    0    60    70
8   8    0    70    80
9   9    0    80    90
10  10   1    90    100
11  11   0    0     10
12  12   0    10    20
13  13   0    20    30
14  14   0    30    40
15  15   1    40    50
16  16   0    0     10
17  17   0    10    20
18  18   0    20    30
19  19   0    30    40
20  20   0    40    50
Run Code Online (Sandbox Code Playgroud)

显然,data$stop <- data$start + 10但我怎么能像所描述apply()的那样start增量?

Kar*_*ius 7

这个怎么样:

Reduce(function(x,y) (1-y)*(x+10), data$event[-nrow(data)], accumulate=T, init=0)
Run Code Online (Sandbox Code Playgroud)