Пакеты с тем же именем функции

Библиотеки с таким же именем функции в R кажутся очень раздражающими. Что является самым простым способом решения таких проблем, как следующее?

Attaching package: ‘dplyr’

The following objects are masked from ‘package:stats’:
filter, lag
The following objects are masked from ‘package:base’:
intersect, setdiff, setequal, union

добавление library(stats) или вызов функции фильтра как stats::filter, а остальные функции, как показано ниже, не сработали для меня.

library(ggplot2)
library(dplyr)
library(stats)
stats::filter
stats::lag 
base::union 
base::setdiff 
base::setequal 
base::intersect

# Reading in the data
data <- read.csv("data.csv", header = FALSE)

# Plots 
dataSummary  <- data %>% group_by(id) %>% summarise(data_count = x())
dataSummary
plotTest <- ggplot(dataSummary, aes(id, data_count)) + geom_bar(stat = 'identity')  + ggtitle("Test Title")
plot(plotTest) 

Но это продолжает давать предыдущее предупреждающее сообщение перед выполнением функции построения графика. Любые указатели? или есть все равно, чтобы подавить эти предупреждения и сделать заговор?

Ответ 1

  • Если вы просто не хотите, чтобы предупреждения отображались, загрузите пакет через

    library(dplyr, warn.conflicts = FALSE)
    

    Однако основной недостаток заключается в том, что он просто скрывает проблему, это не останавливает выполнение. Если вам действительно нужно использовать одну из маскированных функций, вы можете назвать ее как stats::lag (@alistaire).

  • Не используйте пакеты, которые маскируют базовые функции. Общая идея при запуске example("filter") (скажем) дает другой ответ после загрузки пакета anti-social.

  • Некоторые пакеты "улучшают" базовые функции, поэтому маскирование не является проблемой.

  • Порядок загрузки пакетов имеет значение. Первый загруженный пакет - это сначала в пути поиска, если вы используете функцию, которая была маскируется. См. этот ответ для понимания.


Этот ответ попытался обобщить многие комментарии, которые будут (в конечном итоге) удалены.