[Rd] parent.frame(1) of a S4 method is not a calling environment.
Duncan Murdoch
murdoch.duncan at gmail.com
Tue Aug 17 12:23:08 CEST 2010
Vitaly S. wrote:
> Martin Morgan <mtmorgan at 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
> Standardised, simpler syntax like .() in ggplot and plyr, would be handy here.
> Hopefully .() is not grabbed for something else in meanwhile:).
>
> Vitaly.
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
More information about the R-devel
mailing list