我必须对 R 中的 data.frame 的行应用迭代计算。问题是,对于每一行,结果取决于先前计算和先前行的结果。
我已经使用类似于以下示例的循环实现了解决方案:
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]
}
问题是真正的代码非常慢(特别是如果我在 KNIME 的 R 片段中使用它)
有没有办法以更有效的类似 R 的方式优化代码?我尝试使用 apply 系列,但在我的情况下似乎不起作用。
非常感谢你