[Rd] Changed behaviour when passing a function?

Gabriel Becker
Thu, 22 Oct 2015 21:08:37 -0000

Joris,


When a function call (detected via the parenthesis) R does the equivalent
of get(..., mode="function") to resolve the symbol.

> round = 2
> round(5.3)
[1] 5
> get("round")
[1] 2
> get("round", mode = "function")
function (x, digits = 0)  .Primitive("round")


It's done this for a while, but didn't always do it, I think. I
don't know
when the change happened.

Best,
~G


On Thu, Oct 22, 2015 at 10:59 AM, Joris Meys <jorismeys at gmail.com>
wrote:

> Hi all,
>
> When teaching this year's class, I was quite amazed that one of my
examples
> didn't work any longer. I wanted to illustrate the importance of
> match.fun() with following code:
>
> myfun <- function(x, FUN, ...){
>     FUN(x, ...)
> }
> round <- 2
> myfun(0.85, FUN = round, digits=1)
>
> I expected to see an error, but this code doesn't generate one. It
seems as
> if in the current R version match.fun() is added automatically.
>
> I've scrolled through the complete R News section specifying all the
> changes and bug fixes, starting from 3.0.0.  I couldn't find anything
on
> that change in behaviour though. Where can I find more information on what
> changed exactly?
>
> Thanks
> Cheers
> Joris
>
> --
> Joris Meys
> Statistical consultant
>
> Ghent University
> Faculty of Bioscience Engineering
> Department of Mathematical Modelling, Statistics and Bio-Informatics
>
> tel :  +32 (0)9 264 61 79
> Joris.Meys at Ugent.be
> -------------------------------
> Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



--
Gabriel Becker, PhD
Associate Scientist (Bioinformatics)
Genentech Research