I do know it, but wanted to spend a little more effort to make generalized function for this type of plot.
Thanks --- On Tue, 5/18/10, Shi, Tao <shida...@yahoo.com> wrote: > From: Shi, Tao <shida...@yahoo.com> > Subject: Re: [R] automate curve drawing on nls() object > To: "array chip" <arrayprof...@yahoo.com>, r-help@r-project.org > Date: Tuesday, May 18, 2010, 9:25 PM > 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.