Мне нужно применить итеративный расчет к строкам data.frame в 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]
}
Проблема в том, что реальный код очень медленный (особенно если я использую его в фрагменте R на KNIME)
Есть ли способ оптимизировать код более эффективным способом, подобным R? Я пытался использовать семейство приложений, но в моем случае это не сработало.
Большое спасибо