Matthieu wants to manipulate the *formula* --- i.e. control what predictors go into the formula --- rather than to add something to one of the predictors (or not, as the case maybe).
I.e. what is wanted is that if ``condition'' is TRUE then the formula should be freeny.y ~ freeny.x[,-4] + freeny.x[,4] and otherwise it should be freeny.y ~ freeny.x[,-4] The subtlety is that `` y ~ x + NULL'' gives the model ``y = beta_0 + beta_1 * x + E'' Whereas ``y ~ x + a'' gives the model ``y = beta_0 + beta_1 * x + beta_2 * a + E''. Irrespective of what the object a happens to be --- or even of whether it exists. (This is a bit of an oversimplification I think, but close enuff.) Then when lm() tries to fit y = beta_0 + beta_1 * x + beta_2 * a + E it gets all in a dither when a is NULL, because the model does not then make sense. I'm afraid I don't know how to get around the problem using the NULL concept. Wiser heads than mine may be able to suggest a way. There are however different approaches to the problem, ***not*** using NULL. E.g. fff <- if(connie) as.formula(freeny.y ~ freeny.x[,-4] + freeny.x[, 4]) else as.formula(freeny.y ~ freeny.x[,-4]) fit <- lm(fff) or (more sensibly?) fff <- if(connie) as.formula(freeny.y ~ freeny.x) else as.formula (freeny.y ~ freeny.x[,-4]) fit <- lm(fff) More sensibly still: fff <- if(connie) y ~ . else y ~ . - market.potential fit <- lm(fff,data=freeny) Where ``connie'' is some condition (with value either TRUE or FALSE). Formulae can also be constructed as text strings (e.g. using ``paste'') and then converted to actual formulae using as.formula(). HTH. cheers, Rolf Turner On 4/03/2008, at 11:34 AM, <[EMAIL PROTECTED]> wrote: >> From: Matthieu Stigler <[EMAIL PROTECTED]> >> Date: 2008/03/03 Mon PM 04:07:09 CST >> To: r-help@r-project.org >> Subject: [R] How to include an externally defined NULL value in lm > > maybe you should a<-0 unless there's special > behavior of NULL that's unknownst to me ? > > >> Hello! >> >> I would love to be able to include an external variable to a lm >> call, I >> mean something: >> >> if(TRUE) >> a<-freeny.x[,4] >> else >> a<-NULL >> >> lm(freeny.y~freeny.x[,-4] +a) >> >> but it does not work with a<-NULL, whereas >> >> lm(freeny.y~freeny.x[,-4] +NULL) >> >> I don't understand why and did not find an answer in the >> manuals... do >> you see it? Any idea? >> >> Thanks!! >> >> ______________________________________________ >> 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. > > ______________________________________________ > 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. ###################################################################### Attention:\ This e-mail message is privileged and confid...{{dropped:9}} ______________________________________________ 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.