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

FunctionRPackagesConflict

Function Problem Overview


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 ?

Function Solutions


Solution 1 - Function

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

Solution 2 - Function

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

Solution 3 - Function

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/

Solution 4 - Function

i had 2 packages who had same function name ts() The 2 pacckages who had the same were :

  1. forecast
  2. List item

I inspected what was going on by typing

?ts


Help on topic 'ts' was found in the following packages:

Time-Series Objects
(in package stats in library C:/Program Files/R/R-3.6.2/library)
Format time stamps
(in package bReeze in library C:/Users/mycomputer/Documents/R/win-library/3.6)

Solution : Then to use the function ts that comes with package forecast i used : because the help showed me that forcast was calling stats

> Time-Series Objects (in package stats

stats::ts

because is saw from help that forecasts use a package called stats ;)

forecast::ts

Time-Series Objects
(in package stats

was giving me error, because forecast package was using a sub package ;

so final usage looks like this :

library(bReeze)
library(forecast)

# Subset data
my_time_series <- stats::ts(c(df_sub$y), start=2018, frequency = 12)

# Plot
theme_set(theme_classic())
ggseasonplot(my_time_series) + labs(title="My graph title")

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRockScienceView Question on Stackoverflow
Solution 1 - FunctionAndrieView Answer on Stackoverflow
Solution 2 - FunctionjbergView Answer on Stackoverflow
Solution 3 - FunctionlovelyzlfView Answer on Stackoverflow
Solution 4 - FunctionsylvainView Answer on Stackoverflow