In this case, Ben's approach is the way to go. I'm curious how you fit nls without knowing the model formula beforehand?
...Tao ----- Original Message ---- > From: array chip <arrayprof...@yahoo.com> > To: r-help@r-project.org; TaoShi <shida...@yahoo.com> > Sent: Tue, May 18, 2010 5:22:47 PM > Subject: Re: [R] automate curve drawing on nls() object > > well, this is not going automate enough because you have to know how the > model > (formula) looks like, and how many parameters there are in the model > beforehand > to do what you are suggesting. Thanks --- On Tue, 5/18/10, > Shi, Tao < > href="mailto:shida...@yahoo.com">shida...@yahoo.com> wrote: > > From: Shi, Tao < > href="mailto:shida...@yahoo.com">shida...@yahoo.com> > Subject: Re: > [R] automate curve drawing on nls() object > To: "array chip" < > ymailto="mailto:arrayprof...@yahoo.com" > href="mailto:arrayprof...@yahoo.com">arrayprof...@yahoo.com>, > ymailto="mailto:r-help@r-project.org" > href="mailto:r-help@r-project.org">r-help@r-project.org > Date: > Tuesday, May 18, 2010, 7:42 PM > I can't directly answer your > question > regarding 'expression', but can you just replace b, c,d, > and > e with coef(obj)[1], coef(obj)[2], ... > etc. You still can > automate the whole > process this way, right? > > > > > > > ----- Original Message ---- > > From: array > chip < > href="mailto:arrayprof...@yahoo.com">arrayprof...@yahoo.com> > > > To: > href="mailto:r-help@r-project.org">r-help@r-project.org > > Sent: > Tue, May 18, 2010 4:13:33 PM > > Subject: [R] automate curve drawing on > nls() object > > > > Hi, I would like to use the curve() > function to draw > the predicted curve from an > > nls() object. > for > > example: > > > dd<-read.table("dd.txt",sep='\t',header=T,row.names=1) > > obj<-nls(y~c+(d-c)/(1+(x/e)^b),data=dd,start=list(b=-1, > > > > c=0, d=100, e=150)) > coef(obj) > b > > > c > d > > e > > -1.1416422 0.6987028 102.8613176 > > 135.9373131 > > curve(0.699+(102.86-0.699)/(1+(x/135.94)^(-1.1416)),1,20000) > > > Now > > I am going to have a lot of datasets to do this, so > > certainly I would like to > > automate this. Suppose that I can create > a character > string for the formula, but > > I am not sure how > to pass that character string into > the curve() to make it > > > work. The help page of curve() says the first argument > is "an expression > written > > as a function of x, or alternatively the name of a > > function which will be > > plotted". I tried the following, for > example: > > substitute(expression(c + > > (d - c)/(1 + > (x/e)^b)),as.list(coef(obj))) > will > > return: > > "expression(0.698704171233635 + (102.861317499063 - > > > 0.698704171233635)/(1 + > > (x/135.937317917920)^-1.14164217993857))" > > so I > > > tried: > curve(substitute(expression(c + (d - c)/(1 + (x/e)^b)), > > > as.list(coef(obj))), 1,20000) > > but it returns an > error: > "Error in > > xy.coords(x, y, xlabel, ylabel, log) : > > 'x' and 'y' lengths > > differ" > > Any > suggestions? > > > A related question: > > If I > do > > this: > substitute(expression(c + (d - c)/(1 + > > > (x/e)^b)),as.list(coef(obj))) > > I will get: > > > > "expression(0.698704171233635 + (102.861317499063 - > > 0.698704171233635)/(1 + > > > (x/135.937317917920)^-1.14164217993857))" > > But if I > > > do: > > substitute(parse(text=as.character(obj$call$formula[3]),srcfile=NULL),as.list(coef(obj))) > > > I > > only get: > "parse(text = > as.character(obj$call$formula[3]), srcfile = > NULL)" > > as a > result, not have b,c,d,e replaced by coefficient > > > > values. > > where > > > > > parse(text=as.character(obj$call$formula[3]),srcfile=NULL) > returns the > > > wanted expression: > "expression(c + (d - c)/(1 + > (x/e)^b))" > > Why is > > that? > > > Thanks > > John > > > ______________________________________________ > > > > ymailto="mailto: > href="mailto:R-help@r-project.org">R-help@r-project.org" > > > > href="mailto: > href="mailto:R-help@r-project.org">R-help@r-project.org"> > ymailto="mailto:R-help@r-project.org" > href="mailto:R-help@r-project.org">R-help@r-project.org > mailing > list > > > href=" > href="https://stat.ethz.ch/mailman/listinfo/r-help" target=_blank > >https://stat.ethz.ch/mailman/listinfo/r-help" > target=_blank > > > > > target=_blank >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.