On 22/10/2015 5:44 PM, Gabriel Becker 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.
It comes down to the order of operations: we need to bind something to
FUN, and we need to look up a function named FUN. Since the binding
comes first, it fails. If it happened in the other order: look for a
function named FUN,
find an unresolved binding to "round", look in the caller frame for a
function named round, we wouldn't get the error. But that's not how we
do it.
Duncan Murdoch
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.dun...@gmail.com <mailto:murdoch.dun...@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@r-project.org <mailto:R-devel@r-project.org> mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
--
Gabriel Becker, PhD
Associate Scientist (Bioinformatics)
Genentech Research
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel