On 20/04/2008 12:32 PM, Ronaldo Reis Junior wrote: > Em Dom 20 Abr 2008, Duncan Murdoch escreveu: >> On 20/04/2008 9:40 AM, Ronaldo Reis Junior wrote: >>> Hi all, >>> >>> I have a problem with an object inside a formula in a function that I >>> make. >>> >>> I create an object named qvartemp. This object is OK, look the levels: >>>> print(levels(qvartemp)) >>> [1] "baixomedio" "alto" >>> >>> Now I create a new object with a new formula: >>>> new.form <- as.formula(gsub(qvar,"qvartemp",as.expression(mma$formula))) >>> Look this new object: >>>> print(new.form) >>> Riqueza ~ Biomassa * qvartemp >>> >>> Now here is the problem, I try to update an existing model (mma) changing >>> the formula by the new.form >>> >>> mmaa <- update(mma,new.form) >>> >>> But my function is aborted with this message: >>> >>> Error in eval(expr, envir, enclos) : object "qvartemp" not found >>> >>> If I create this object qvartemp in R section manually it my function >>> work, because it get the object from my workspace (but it is usefull just >>> for testing), but my function dont find this object qvartemp created >>> inside the function. >>> >>> If I run all my function line by line without use the function it work, I >>> think that is because in this case the object is created in my workspace. >>> But when I run a function the object is created only in memory (not in my >>> workspece) and in this case update dont find this object. >>> >>> Anybody can suggest any Idea to fix it? I necessary I send my function >>> and a example. >> Formulas have attached environments; that's where they look for the >> variables they use. You created new.form, but didn't give it the >> environment of the old one. >> >> I think all you need is >> >> environment(new.form) <- environment(mma$formula) >> >> Duncan Murdoch > > Hi Duncan, > > thanks for your quick reply. I think that is not the problem, because with > glm > or lm the formula inside the new.form work, only on update it dont work. > > But I try this solution, I put new.form enclosed in an environment: > > environment(new.form) <- > environment(as.formula(gsub(qvar,"qvartemp",as.expression(mma$formula)))) > > But the error is the same.
Of course it is. That operation does nothing, since the value of new.form was already as.formula(gsub(qvar,"qvartemp",as.expression(mma$formula))). If you want any more help, you're going to have to provide a reproducible example. Duncan Murdoch ______________________________________________ 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.