Если я загружаюсь MASS
пакет:
library(MASS)
затем загрузка пытается работать dplyr::select
, Я получаю ошибку:
library(dplyr)
mtcars %.%
select(mpg)
# Error in select(`__prev`, mpg) : unused argument (mpg)
Как я могу использовать dplyr::select
с MASS
пакет загружается?
Как с комментарием KFB выше, одно простое решение, которое я нашел, состоит в том, чтобы (1) загрузить Ваши пакеты, (2) сделать не, волнуются о порядке (который может быть твердым с зависимостями), (3) присвоить приоритет тому, какой бы ни пакет Вы предпочли бы "собственный" пространство имен:
select <- dplyr::select
filter <- dplyr::filter
, Например, посмотрите как environment: namespace
изменения ниже:
library(MASS)
select
function (obj)
UseMethod("select")
<bytecode: 0x7fbe822811b8>
<environment: namespace:MASS>
select <- dplyr::select
select
function (.data, ...)
{
UseMethod("select")
}
<bytecode: 0x7fbe7c4a2f08>
<environment: namespace:dplyr>
Изящное решение состоит в том, чтобы использовать conflicted
пакет что:
Видит пример кода ниже частично от https://github.com/r-lib/conflicted
# install.packages("devtools")
devtools::install_github("r-lib/conflicted")
library(conflicted)
library(dplyr)
# example of informative error message
filter(mtcars, cyl == 8)
#> Error: [conflicted] `filter` found in 2 packages.
#> Either pick the one you want with `::`
#> * dplyr::filter
#> * stats::filter
#> Or declare a preference with `conflicted_prefer()`
#> * conflict_prefer("filter", "dplyr")
#> * conflict_prefer("filter", "stats")
# example of assigning priority with conflict_prefer function
conflict_prefer("filter", "dplyr")
filter(mtcars, cyl == 8) %>% head(2)
# mpg cyl disp hp drat wt qsec vs am gear carb
# 1 18.7 8 360.0 175 3.15 3.44 17.02 0 0 3 2
# 2 14.3 8 360.0 245 3.21 3.57 15.84 0 0 3 4