[Rd] Changed behaviour when passing a function?

Joris Meys jorismeys at gmail.com
Fri Oct 23 11:33:00 CEST 2015


Sorry guys, I've been my stupid self again.  Indeed, I had been playing
around and had a FUN in my global environment. I've checked my history and
what I actually did, was this:

FUN <- round
myfun <- function(x, FUN, ...){
  FUN(x, ...)
}
round <- 2
myfun(0.85, FUN = round, digits=1)

And then everything works as I would expect. Moral of the story: don't post
on r-devel on a caffein detox.

Cheers and thanks for being so patient

On Thu, Oct 22, 2015 at 11:44 PM, Gabriel Becker <gmbecker at ucdavis.edu>
wrote:

> Of course (and unsurprisingly) Duncan is correct.  I see that behavior in
> R 3.1.0, as well as the modern ones Duncan mentioned.
>
> What I said is true, as far as it goes, but the symbol being resolved is
> FUN, so when looking for a function it doesn't find the function version of
> round.
>
> Did you perhaps have a function named FUN in your global environment? If
> so you are being bitten by what I mentioned before.
>
> > FUN = function(...) 1
> > myfun <- function(x, FUN, ...){
> +      FUN(x, ...)
> + }
> > round <- 2
> > myfun(0.85, FUN = round, digits=1)
> [1] 1
>
> ~G
>
> On Thu, Oct 22, 2015 at 2:25 PM, Duncan Murdoch <murdoch.duncan at gmail.com>
> wrote:
>
>> On 22/10/2015 1:59 PM, Joris Meys 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?
>>>
>>>
>> When you say "current R version", what do you mean?  I see an error:
>>
>> > myfun <- function(x, FUN, ...){
>> +     FUN(x, ...)
>> + }
>> > round <- 2
>> > myfun(0.85, FUN = round, digits=1)
>> Error in myfun(0.85, FUN = round, digits = 1) (from #2) :
>>   could not find function "FUN"
>>
>> I see this in 3.2.2, R-patched and R-devel.
>>
>> Duncan Murdoch
>>
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>
>
>
> --
> Gabriel Becker, PhD
> Associate Scientist (Bioinformatics)
> Genentech Research
>



-- 
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]]



More information about the R-devel mailing list