On Sun, Oct 3, 2010 at 4:29 PM, lord12 <trexi...@yahoo.com> wrote: > > If I have a model line = lm(y~x1) and I want to use a for loop to change the > number of explanatory variables, how would I do this? > > So for example I want to store the model objects in a list. > > model1 = lm(y~x1) > model2 = lm(y~x1+x2) > model3 = lm(y~x1+x2+x3) > model4 = lm(y~x1+x2+x3+x4) > model5 = lm(y~x1+x2+x3+x4+x5)... > model10. > > model_function = function(x){ > for(i in 1:x) { > } > If x =1, then the list will only add model1. If x =2, then the list will add > both model1 and model2. If x=3, then the list will add model1 model 2 and > model3 and so on. How do I translate this into code?
Here are a couple of approaches. The first one is simpler and may be adequate. The second has the advantage that it writes out the formula in full, fo, which is shown in the output: lapply(1:4, function(i) lm(y1 ~., anscombe[c(1:i, 5)])) lapply(1:4, function(i) { fo <- formula(model.frame(y1 ~., anscombe[c(1:i, 5)])) do.call("lm", list(fo, quote(anscombe))) }) -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.