R: 2 functions with the same name in 2 different packages R: 2 functions with the same name in 2 different packages r r

R: 2 functions with the same name in 2 different packages


You have probably already noticed that the order of loading the packages makes a difference, i.e. the package that gets loaded last will mask the functions in packages loaded earlier.

To specify the package that you want to use, the syntax is:

chron::is.weekend()tseries::is.weekend()

In other words, use packagename::functionname()

In addition, if you know that you will always want to use the function in chron, you can define your own function as follows:

is.weekend <- chron::is.weekend    #EDIT


library(chron)is.weekend.chron <- is.weekendlibrary(tseries)

then you can call is.weekend for the tseries version or is.weekend.chron for the chron version


you should turn to the conflicted package from Hadly.

library(conflicted)library(dplyr)filter(mtcars, am & cyl == 8)

Then the conflicted package will throw an error and will force you clearly determine which function you prefer:

Error: filter found in 2 packages. You must indicate which one you want with :: * dplyr::filter * stats::filter

To resolve conflicts for your entire session, use <-:

filter <- dplyr::filterfilter(mtcars, am & cyl == 8)
    mpg cyl disp  hp drat   wt qsec vs am gear carb1 15.8   8  351 264 4.22 3.17 14.5  0  1    5    42 15.0   8  301 335 3.54 3.57 14.6  0  1    5    8

You can also turn to the conflict_prefer() function which can determine the winner when a conflict occur.The code example is borrowed from Hadly, pls refer to the package website.https://www.tidyverse.org/blog/2018/06/conflicted/