Voici un exemple de booléens que j'ai inclus dans un 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)
Je souhaite renvoyer une séquence de nombres commençant à 1 à partir de chaque FALSE et augmentant de 1 jusqu'au prochain FALSE.
Le vecteur désiré qui en résulte est le suivant :
[1] 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1
Voici le code qui permet d'y parvenir, mais je suis sûr qu'il existe un moyen plus simple ou plus élégant de le faire en R. J'essaie toujours d'apprendre à coder les choses plus efficacement en R plutôt que de me contenter de faire le travail.
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
}
}