How to obtain a position of last non-zero element
Whenever you need to fill repetitions with a value, think run-length encoding.
In this case, you can determine the run lengths and then repeat the indices of count == 0
an according number of times:
lengths = rle(event == 0)$lengthsnonzeros = which(event != 0)runs = c(0, rep(nonzeros, each = 2))result = rep(runs, lengths)
Alternative, substitute the runs in the RLE and then inverse it:
rle = rle(event == 0)nonzeros = which(event != 0)rle$values = c(0, rep(nonzeros, each = 2))result = inverse.rle(rle)