Use as.formula to convert the character string to an object of class "formula" and note that we want to set the formula's environment appropriately:
fit.main <- function(resp, x, env = parent.frame()) { fo <- as.formula(paste("y", "~", paste(x, collapse = "+"))) environment(fo) <- env fo } # test fit.main("y", letters[1:3]) On 8/24/06, Maria Montez <[EMAIL PROTECTED]> wrote: > Hi! > > I would like to be able to create formulas automatically. For example, I > want to be able to create a function that takes on two values: resp and > x, and then creates the proper formula to regress resp on x. > > My code: > > fit.main <- function(resp,x) { > form <- expression(paste(resp," ~ ",paste(x,sep="",collapse=" + "),sep="")) > z <- lm(eval(form)) > z > } > main <- fit.main("y",c("x1","x2","x3","x4")) > > and I get this error: > Error in terms.default(formula, data = data) : > no terms component > > Any suggestions? > > Thanks, Maria > > ______________________________________________ > R-help@stat.math.ethz.ch 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@stat.math.ethz.ch 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.