On Tuesday, August 17, 2010, Vitaly S. <spinuvit.l...@gmail.com> wrote: > Duncan Murdoch <murdoch.dun...@gmail.com> writes: > >> Vitaly S. wrote: >>> Martin Morgan <mtmor...@fhcrc.org> writes: >>> >>>>> So, can I be sure that for such functions parent.frame(2) will always >>>>> work? >>>>> What are the additional rules? >>>>> >>>> callNextMethod() will cause additional problems; the idea that you'll >>>> grab things from somewhere other than function arguments doesn't seem >>>> like a robust design, even if it's used in some important parts of R. >>>> >>>> Martin >>>> >>>> >>> >>> That make it difficult to handle unevaluated expressions in methods. A >>> solution >>> would be to explicitly require the users to use quote() or expression(), >>> and >>> then to use the "expression" in the signature. Slightly unpleasant, though. >>> >>> >> >> You could use formulas for that. If you pass in >> >> formula = ~ x + y*z >> >> then environment(formula) will be the right evaluation environment, and >> formula[[2]] will be the unevaluated x + >> y*z. >> >> Duncan Murdoch > > Thank you Duncan, I didn't know that. > > For programmatic use though, formula interface is slightly inconvenient. A > specialized function and class would be desirable. With the advent of more and > more complex S4 classes, unevaluated expressions in methods calls will became > a > necessity, that's my feeling.
I probably should move the quoting related out of plyr into it's own package to facilitate this type of reuse. I think the current structure is quite general. Hadley -- Assistant Professor / Dobelman Family Junior Chair Department of Statistics / Rice University http://had.co.nz/ ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel