これは、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)
各 FALSE から 1 から始まり、次の FALSE まで 1 ずつ増加する一連の数値を返したいと考えています。
結果の目的のベクトルは次のとおりです。
[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
}
}