Существуют ли способы избежать пустых значений в итеративном процессе, когда какое-либо условие активировано, чтобы перейти к следующей итерации?Намерение «как решить» эту проблему с самой структурой циклаИзбегайте сохранения нулевых значений при пропуске итерации в цикле for
[КОНТЕКСТ]:
Я имею в виду случай, когда вам нужно использовать механизм накапливания внутри цикл в сочетании с условным выражением, и ему дается сценарий, в котором, по сути, один из путей пути не интересует вас. В честь дать лечение в данный момент, а не позади вычисления, вы переходите к следующей итерации.
[Пример]
Пусть дана некоторая последовательность чисел, я заинтересован только в сохраненных номеров последовательности, которые больше, чем 2 в списке.
storeGreaterThan2 <- function(x){
y <- list()
for (i in seq_along(x)) {
if (x[i] > 2) {
y[[i]] <- x[i]
} else {
next
}
}
y
}
Предыдущая функция сделка с конечной целью, но когда условие пропустить итерацию активируется недостающая операция в индексе заполняются нулевым значением в окончательном списке.
> storeGeaterThan2(1:5)
[[1]]
NULL
[[2]]
NULL
[[3]]
[1] 3
[[4]]
[1] 4
[[5]]
[1] 5
В духе решения проблемы внутри структуры цикла, как она могла бы справиться с этим?
Внутри вашего цикла использовать длину индекса (y) +1, чтобы добавить дополнительный элемент, например: 'y [[length (y) +1]] <- x [i]'. В зависимости от ваших желаемых результатов есть несколько лучших и более быстрых способов, чем использование цикла for. – Dave2e
Это хорошее решение для решения проблемы значений NULL в одном цикле. –