Пакеты с тем же именем функции
Библиотеки с таким же именем функции в 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
.
-
Некоторые пакеты "улучшают" базовые функции, поэтому маскирование не является проблемой.
-
Порядок загрузки пакетов имеет значение. Первый загруженный пакет - это
сначала в пути поиска, если вы используете функцию, которая была
маскируется. См. этот ответ для понимания.
Этот ответ попытался обобщить многие комментарии, которые будут (в конечном итоге) удалены.