Здесь образец логических элементов, которые я имею как часть 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
}
}