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, ...){
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, ...){
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