[R] generating an expression for a formula automatically
Maria Montez
montez at bu.edu
Sat Aug 26 03:44:49 CEST 2006
Thank you for your answers yesterday. I now have another question!
Suppose that instead of creating a formula for a regression model I
simply wanted to add the variables. I believe I cannot use the
as.formula anymore. Again I tried to use expression to no avail. I get
an expression but I can't use it.
fit.sum <- function(x) {
fo <- expression(paste(x, collapse = "+"))
eval( fo)
}
fit.sum(c("x1","x2"))
Basically what I need is to learn how to use variables when what is
given to me are their names (character list).
Thanks again, Maria
Sundar Dorai-Raj wrote:
>
> Maria Montez 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 at 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.
>
>
> Hi, Maria,
>
> Try
>
> regr <- paste(x, collapse = "+")
> form <- as.formula(sprintf("%s ~ %s", resp, regr))
>
> HTH,
>
> --sundar
>
More information about the R-help
mailing list