[R] Risks of using "function <- package::function" ?

Duncan Murdoch murdoch.duncan at gmail.com
Fri Nov 17 01:46:15 CET 2017


On 16/11/2017 4:53 PM, Boris Steipe wrote:
> Large packages sometimes mask each other's functions and that creates a headache, especially for teaching code, since function signatures may depend on which order packages were loaded in. One of my students proposed using the idiom
> 
>    <function> <- <package>::<function>
> 
> ... in a preamble, when we use just a small subset of functions from a larger package. I like that idea and can't see obvious disadvantages(1).
> 
> Are there subtle risks to that approach?

You might do it twice.  R isn't going to complain if you have

filter <- stats::filter

# some other code here...

filter <- dplyr::filter

in your code, but the second one will overwrite the first one.

The normal way to handle this is in the NAMESPACE file, where you should 
have

importFrom(stats, filter)

If you then have

importFrom(dplyr, filter)

you should get an warning:

Warning: replacing previous import ‘stats::filter’ by ‘dplyr::filter’ 
when loading ‘testpkg’.

Duncan Murdoch



More information about the R-help mailing list