【发布时间】:2017-06-04 14:11:16
【问题描述】:
我必须对 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 sn-p 中使用它)
有没有办法以更高效的类似 R 的方式优化代码?我尝试使用 apply 系列,但在我的情况下似乎不起作用。
非常感谢
【问题讨论】:
标签: r loops optimization iteration knime