Более элегантный способ вернуть последовательность чисел на основе логических значений?

Вот пример логических значений, которые я имею как часть 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)

Я хочу вернуть последовательность чисел, начинающуюся с 1 от каждого FALSE и увеличивающуюся на 1 до следующего FALSE.

Результирующий желаемый вектор:

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

Вот код, который выполняет это, но я уверен, что есть более простой или более элегантный способ сделать это в R. Я всегда пытаюсь научиться кодировать вещи более эффективно в R, а не просто выполнять работу.

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
    }
}

Ответы на вопрос(3)

Ваш ответ на вопрос