2
我必須對R中的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]
}
的問題是,實際的代碼非常緩慢(expecially如果我用它作爲R代碼段上KNIME)
有沒有什麼辦法以更高效的R-like方式優化代碼?我試圖使用申請家庭,但它似乎不適用於我的情況。
非常感謝您
非常感謝@ user20650。 這對我的問題有很大幫助。這個例子是一個更大問題的證明。如果我有這樣的事情:'舉例$ K [i] <-f(示例$ K [i-1],示例$ R [i-1])''和'示例$ R [i] < - g(示例$ K [i],示例$ percentage [i])' –
我認爲這取決於f和g的功能。你可以用一個小例子來編輯你的問題,包括函數,它可以重現你的實際問題(用代碼來展示預期的結果,和以前一樣) – user20650