小编tab*_*mis的帖子

如何通过顺序操作加速 R 循环

我有一个模型,它有多个条件并返回一个值,该值取决于下一个预测。假设给定 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)

尽管代码运行良好,但由于我有数十万个观察结果,所以速度非常慢。我将不胜感激任何可以加快速度的建议。

performance loops r sequential

0
推荐指数
1
解决办法
191
查看次数

标签 统计

loops ×1

performance ×1

r ×1

sequential ×1