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.

Reply via email to