Мне нужно применить итеративный расчет по строкам data.frame в R. Проблема в том, что для каждой строки результат зависит от результатов предыдущего вычисления и предыдущих строк ,оптимизация итеративного вычисления, избегающего циклов на R
Я выполнил решение с помощью цикла, как в следующем примере:
example <- data.frame(flag_new = c(TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE),
percentage =sample(1:100,22)/100)
n.Row <- nrow(example)
# initialization
example$K <-0
example$R <-0
example$K[1] <-100
example$R[1] <-example$K[1]*example$percentage[1]
#loop
for(i in 2:n.Row){
if(example$flag_new[i]){
example$K[i] <-100
} else {
example$K[i] <-example$K[i-1]-example$R[i-1]
}
example$R[i] <- example$K[i]*example$percentage[i]
}
Проблема заключается в том, что реальный код очень медленно (EXPECIALLY, если я использую его в R фрагмент кода на KNIME)
Есть ли способ оптимизировать код в более эффективном R-стиле? Я попытался использовать семейство приложений, но, похоже, это не работает в моем случае.
Большое спасибо
спасибо @ пользователь20650. Это помогает в значительной части моей проблемы. В качестве примера можно привести более сложную проблему. Что делать, если у меня есть что-то вроде этого: «пример $ K [i] <-f (пример $ K [i-1], пример $ R [i-1]) 'и' пример $ R [i] <- g (пример $ K [i], пример $ percent [i]) ' –
Я думаю, что это будет зависеть от того, что стоят функции f и g. Вы можете отредактировать свой вопрос с помощью небольшого примера, включая функции, которые воспроизводят вашу актуальную проблему (с кодом, чтобы показать ожидаемый результат, как и раньше) – user20650