R: 2 functions with the same name in 2 different packages
I need to load to R packages : tseries and chron
Both have a function named is.weekend
I always have in my environment the function from the second package I loaded.
How can I access always the function from, let say, chron ?
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.weekend
library(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::filter
filter(mtcars, am & cyl == 8)
mpg cyl disp hp drat wt qsec vs am gear carb
1 15.8 8 351 264 4.22 3.17 14.5 0 1 5 4
2 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/