A couple of easy ways are to create the calling sequence as a call or character string and then evaluate it:
eval(bquote(lm(.(as.name(Ytext)) ~ Xvar, X))) eval(parse(text = paste("lm(", Ytext, "~ Xvar, X)"))) Note that these solutions both have the advantage over some of the prior solutions that the output from print.lm shows which variable was actually used after Call: > eval(bquote(lm(.(as.name(Ytext)) ~ Xvar, X))) Call: lm(formula = Yvar ~ Xvar, data = X) <--- This line comes out meaningfully!!! Coefficients: (Intercept) Xvar 0.3300 0.9729 On 6/14/07, Pedro Mardones <[EMAIL PROTECTED]> wrote: > Dear all; > > Is there any way to make this to work?: > > .x<-rnorm(50,10,3) > .y<-.x+rnorm(50,0,1) > > X<-data.frame(.x,.y) > colnames(X)<-c("Xvar","Yvar") > > Ytext<-"Yvar" > > lm(Ytext~Xvar,data=X) # doesn't run > > lm(Yvar~Xvar,data=X) # does run > > The main idea is to use Ytext as input in a function, so you just type > "Yvar" and the model should fit.... > Also, I need to avoid the expression X$Yvar~X$Xvar > > Thanks for any idea > > PM > > ______________________________________________ > 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.