[R] Avoiding for Loop for moving average

2011-09-02 Thread Noah Silverman
Hello, I need to calculate a moving average and an exponentially weighted moving average over a fairly large data set (500K rows). Doing this in a for loop works nicely, but is slow. ewma - data$col[1] N - dim(data)[1] for(i in 2:N){ data$ewma - alpha * data$ewma[i-1] + (1-alpha) *

Re: [R] Avoiding for Loop for moving average

2011-09-02 Thread R. Michael Weylandt
Have you looked at SMA/EMA from the TTR package? That's a pretty quick implementation. runmean from caTools is even better for the SMA but I don't think there's an easy way to turn that into an EWMA. Hope this helps, Michael Weylandt On Fri, Sep 2, 2011 at 12:43 PM, Noah Silverman

Re: [R] Avoiding for Loop for moving average

2011-09-02 Thread Joshua Ulrich
On Fri, Sep 2, 2011 at 11:47 AM, R. Michael Weylandt michael.weyla...@gmail.com wrote: Have you looked at SMA/EMA from the TTR package? That's a pretty quick implementation. runmean from caTools is even better for the SMA but I don't think there's an easy way to turn that into an EWMA. SMA

Re: [R] Avoiding for Loop for moving average

2011-09-02 Thread Noah Silverman
Joshua, Thanks for the tip. I need to roll my own code on this. But perhaps I can borrow some code from the package you mentioned. Is the package just performing the loop, but in a faster language? -- Noah Silverman UCLA Department of Statistics 8117 Math Sciences Building #8208 Los

Re: [R] Avoiding for Loop for moving average

2011-09-02 Thread Abhijit Dasgupta
There is a recent blog post by Dirk Eddelbeutel on how to do something similar using his Rcpp package and C++, with massive time improvements. http://dirk.eddelbuettel.com/blog/ On 9/2/2011 12:43 PM, Noah Silverman wrote: Hello, I need to calculate a moving average and an exponentially

Re: [R] Avoiding for Loop for moving average

2011-09-02 Thread Joshua Ulrich
On Fri, Sep 2, 2011 at 12:06 PM, Noah Silverman noahsilver...@ucla.edu wrote: Joshua, Thanks for the tip. I need to roll my own code on this.  But perhaps I can borrow some code from the package you mentioned. Is the package just performing the loop, but in a faster language? As I said,

Re: [R] Avoiding for Loop for moving average

2011-09-02 Thread Noah Silverman
Thanks Joshua, I really like the example given in the blog post that Abhijit pointed me to. Doing it in C++ using the Inline seems like an easy way to get a massive improvement in speed without the hassle of writing a package. I'm working on coding that now. -- Noah Silverman UCLA Department

Re: [R] Avoiding for Loop for moving average

2011-09-02 Thread Patrick Burns
The 'filter' function should be able to do what you want efficiently. On 02/09/2011 18:06, Noah Silverman wrote: Joshua, Thanks for the tip. I need to roll my own code on this. But perhaps I can borrow some code from the package you mentioned. Is the package just performing the loop, but