Я пытался оптимизировать свой l oop, но я столкнулся с проблемой и не нашел здесь прямого решения. Я уже проверил другие потоки, такие как Ошибка в if / while (условие) {: отсутствует Значение, где ИСТИНА / ЛОЖЬ требуется , но это не помогает мне решить мою проблему. У меня все еще остается та же проблема.
Это мой код:
output <- character (nrow(df)) # predefine the length and type of the vector
condition <- (df$price < df$high & df$price > df$low) # condition check outside the loop
system.time({
for (i in 1:nrow(df)) {
if (condition[i]) {
output[i] <- "1"
}else if (!condition[i]){
output[i] <- "0"
}else {
output[i] <- NA
}
}
df$output <- output
})
Я в основном проверяю, находится ли моя цена в определенном диапазоне. Если он находится внутри диапазона, я присваиваю ему 1, а если он выходит за пределы диапазона, я присваиваю ему 0. Однако у меня есть пара значений NA, и тогда мой l oop останавливается в тот момент, когда я достигаю NA.
Ниже вы можете увидеть рабочий код, если я отфильтрую NA. Но я хотел бы иметь способ, который бы также обрабатывал NA.
df<- df%>% filter(!is.na(price))
output <- character (nrow(df)) # predefine the length and type of the vector
condition <- (df$price < df$high & df$price > df$low) # condition check outside the loop
system.time({
for (i in 1:nrow(df)) {
if (condition[i]) {
output[i] <- "1"
}else {
output[i] <- "0"
}
}
df$output <- output
})
Есть идеи, как я мог бы обращаться с NA?