[R] How to iterate through different arguments?

Gabor Grothendieck ggrothendieck at gmail.com
Mon Oct 4 01:14:59 CEST 2010


On Sun, Oct 3, 2010 at 4:29 PM, lord12 <trexinsd at 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



More information about the R-help mailing list