Paul Rougieux - 9 months ago 38
R Question

# From a vector of 1 and 0, how to keep only the ones before the first 0?

To parse a text file, I want to extract all numeric lines after a certain character string appears. I have managed to extract the text. Now selecting only numeric lines that appear after this text boils down to this little problem. From a vector of 0 and 1, I want to keep only the ones before the first 0.

a <- c(1,0,1)
b <- c(1,1,1,1,0,1,1,1,0,0,1)


The function f should return:

f(a)
c(1,0,0)
f(b)
c(1,1,1,1,0,0,0,0,0,0,0)


I tried using

which.min(a)
[1] 2
which.min(b)
[1] 5


Or

cumsum(!a)==0
[1]  TRUE FALSE FALSE
cumsum(!b)==0
[1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE


I guess there is a simple solution but I'm probably too sleepy this morning.

There is a cummin function
cummin(a)