If these are nested models, see ?drop.terms.
-- Bert Gunter Genentech Non-Clinical Statistics South San Francisco, CA "The business of the statistician is to catalyze the scientific learning process." - George E. P. Box > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Marc Schwartz > Sent: Thursday, March 03, 2005 7:52 AM > To: Dr Carbon > Cc: [EMAIL PROTECTED] > Subject: Re: [R] creating a formula on-the-fly inside a function > > On Thu, 2005-03-03 at 10:28 -0500, Dr Carbon wrote: > > I have a function that, among other things, runs a linear model and > > returns r2. But, the number of predictor variables passed to the > > function changes from 1 to 3. How can I change the formula > inside the > > function depending on the number of variables passed in? > > > > An example: > > > > get.model.fit <- function(response.dat, pred1.dat, pred2.dat = NULL, > > pred3.dat = NULL) > > { > > res <- lm(response.dat ~ pred1.dat + pred2.dat + pred3.dat) > > summary(res)$r.squared > > # other stuff happens here... > > } > > > > y <- rnorm(10) > > x1 <- y + runif(10) > > x2 <- y + runif(10) > > x3 <- y + runif(10) > > get.model.fit(y, x1, x2, x3) > > get.model.fit(y, x1, x2) > > get.model.fit(y, x1) > > > Consider using as.formula() to take a character vector that > you pass as > an argument instead of specifying each IV separately: > > get.model.fit <- function(my.form) > { > res <- lm(as.formula(my.form)) > summary(res)$r.squared > # other stuff happens here... > } > > > Then call it with: > > get.model.fit("y ~ x1 + x2 + x3") > > Internally, the vector will be converted to: > > > as.formula("y ~ x1 + x2 + x3") > y ~ x1 + x2 + x3 > > Doing it this way provides for greater flexibility if you > want to use a > more complicated formula construct. > > See ?as.formula for more information and further examples, > including the > use of paste() if you want to separate the DV from the IVs for an > additional approach for a long set of similarly named IV's > (ie x1:x25). > > HTH, > > Marc Schwartz > > ______________________________________________ > [email protected] mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html > ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
