R 带中断的条件和

R 带中断的条件和,r,function,cumsum,R,Function,Cumsum,我需要弄清楚如何继续使用c中的累积和,而crit中的下四行从它弯曲的那一行开始有真值 预期输出在列X中: crit c X 1 1 0 NA 2 1 0 NA 3 1 0 NA 4 1 0 NA 5 1 1 1 6 1 2 2 7 1 3 3 8 1 4 4 9

我需要弄清楚如何继续使用
c
中的累积和,而
crit
中的下四行从它弯曲的那一行开始有真值

预期输出在列
X
中:

        crit c    X
    1     1   0   NA
    2     1   0   NA
    3     1   0   NA
    4     1   0   NA
    5     1   1    1
    6     1   2    2
    7     1   3    3
    8     1   4    4
    9     1   5    5
    10    1   6    6
    11    1   7    7   # end of curent cumsum in x
    12    0   0    NA
    13    0   0    NA
    14    0   0    NA
    15    1   0    8   # c rollsum should continue here 
    16    1   0    9   # because there weren't 4 rows with 0 in crit
    17    1   0    10
    18    0   0    NA
    19    1   0    11
    20    0   0    NA
    21    0   0    NA
    22    0   0    NA
    23    0   0    NA
    24    1   0    NA  # cumsum should stop as 4 rows have crit = 0
    25    1   0    NA  
我没有具体的代码要展示,因为我有很多尝试,循环,
rle
ifelse


t我能看到解决这个问题的唯一方法是使用函数,该函数将添加到
c
中正在进行的求和,并添加到
df$c的行中[iI在最后两行,即24和25,您的评论是,
#cumsum应该继续,因为4行的crit=1
,那么为什么
X
coumn,即预期输出NA在那里?更正了它。如果crit的四个值为0,它就会停止。在最后两行,即24和25,您的评论是,
#cumsum应该继续,因为4行的crit=1
,那么为什么
X
列(即预期输出NA)在那里?更正了它。如果四个临界值为0,它将停止。
    structure(list(crit = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1), c = c(0L, 0L, 0L, 0L, 1L, 
2L, 3L, 4L, 5L, 6L, 7L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L), break_true = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0), X = c(NA, NA, NA, 
NA, 1, 2, 3, 4, 5, 6, 7, NA, NA, NA, 8, 9, 10, NA, 11, NA, NA, 
NA, NA, NA, NA)), .Names = c("crit", "c", "break_true", "X"), row.names = c(NA, 
-25L), class = "data.frame")