Maneira mais elegante de retornar uma sequência de números baseada em booleanos?

Aqui está uma amostra de booleanos que tenho como parte de um data.frame:

atest <- c(FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE)

Eu quero retornar uma seqüência de números começando em 1 de cada FALSE e aumentando em 1 até o próximo FALSE.

O vetor desejado resultante é:

[1]  1  2  3  4  5  6  7  8  9 10  1  2  3  4  5  6  7  8  9 10  1

Aqui está o código que faz isso, mas tenho certeza que há uma maneira mais simples ou mais elegante de fazer isso em R. Eu estou sempre tentando aprender como codificar as coisas mais eficientemente em R, em vez de simplesmente fazer o trabalho.

result <- c()
x <- 1
for(i in 1:length(atest)){
    if(atest[i] == FALSE){
        result[i] <- 1
        x <- 1
    } 
    if(atest[i] != FALSE){
        x <- x+1
         result[i] <- x
    }
}

questionAnswers(3)

yourAnswerToTheQuestion