在函数上向量化一个for循环?

时间:2015-11-22 23:13:03

标签: r for-loop indexing vectorization

我正在尝试改进函数的运行时(即删除for循环),但这个对我来说很难。我需要在范围内应用我的ema功能,并且无法想出一种向它进行矢量化的方法。

有没有办法在没有for循环的情况下返回第二个函数?

ema<-function(v,n,a){     
  # v: a data vector
  # n: a scalar constant
  # a: a vector length v of contants
  expt<-c(0:(n-1))
  as<-c(1-a)
  avevec<-c(as^expt)
  sum(avevec*v)/sum(avevec) 
}
betaema<-function(v,n,a,l){ 
  # v: a data vector
  # n: a vector length v of contants
  # a: a vector length v of contants
  # l: a contant, the first value that can have a moving average
  secondvec<-c(rep(0, (length(v)-l)))
  for(i in l:(length(v)-l)){
    secondvec[i+1-l]<-ema(v[(i-n[i]+1):i],n[i],a[(i-n[i]+1):i])
  }
  secondvec
}

0 个答案:

没有答案