我有一个模型,它有多个条件并返回一个值,该值取决于下一个预测。假设给定 A 和 B 的时间序列,模型返回 C 变量的值,该值又用于估计 D 的值。在沿着新 A 和 B 的下一次迭代中,模型还使用估计的 D 作为输入:
df = data.frame(A = sample(-5:5, 10000, replace = TRUE),
B = sample(-5:5, 10000, replace = TRUE),
C = 0,
D=0)
for(i in 1:nrow(df)){
if (df$A[i]< 0 & df$B[i]>0){
df$C[i]<-df$B[i]
} else if(df$A[i]==0 & df$B[i]==0 ){
df$C[i]<-0
} else {
df$C[i]<-df$A[i]+df$B[i]-df$D[i]
}
df$D[i+1]<-ifelse(df$D[i]<=-df$C[i],0,df$D[i]+df$C[i]) # this is a cumulative sum-reset function
}
Run Code Online (Sandbox Code Playgroud)
尽管代码运行良好,但由于我有数十万个观察结果,所以速度非常慢。我将不胜感激任何可以加快速度的建议。