1. ?nrow 2. ?all.vars Getting rid of loop was discussed on Mar 22 and there was some debate on whether or not it was a good idea although it turned out there was a bug in the code that only the loop free version brought out. See archives.
Ajay Shah <ajayshah <at> mayin.org> writes: : : I wrote a function which does "moving window" regressions. E.g. if : there are 100 observations and the window width is 50, then I first : run the regression for observations 1..50, then for 2..51, and so on. : : I am extremely pleased with R in my experience with writing this, : since I was able to pass the model as an argument into the function : Forgive me if I sound naive, but that's rocket science to me!! : : For a regression with K explanatory variables, I make a matrix with : 2*K+2 columns, where I capture: : K coefficients and K standard errors : the residual sigma : R^2 : : My code is: : : # ------------------------------------------------------------ : movingWindowRegression <- function(data, T, width, model, K) { : results = matrix(nrow=T, ncol=2*K+2) : for (i in width:T) { : details <- summary.lm(lm(as.formula(model), data[(i-width+1):i,])) : n=1; : for (j in 1:K) { : results[i, n] = details$coefficients[j, 1] : results[i, n+1] = details$coefficients[j, 2] : n = n + 2 : } : results[i, n] = details$sigma : results[i, n+1] = details$r.squared : } : return(results) : } : : # Simulate some data for a linear regression : T = 20 : x = runif(T); y = 2 + 3*x + rnorm(T); : D = data.frame(x, y) : : r = movingWindowRegression(D, T=T, width=10, model="y ~ x", K=2) : print(r) : # ------------------------------------------------------------ : : I would be very happy if you could look at this and tell me how to do : things better. : : I have two specific questions: : : 1. I find it silly that I have to manually pass K and T into the : function. It would be so much nicer to have: : : r = movingWindowRegression(D, width=10, model="y ~ x") : instead of the existing : r = movingWindowRegression(D, T=T, width=10, model="y ~ x", K=2) : : How can the function inspect the data frame D and learn the : number of rows? : : How can the function inspect the model specification string and : learn K, the number of explanatory variables? : : 2. "The R way" consists of avoiding loops when the code is : vectorisable. I am using a loop to copy out from : details$coefficients into the columns of results[i,]. Is there a : better way? : ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html