Как определить источник конфликта функций в R - PullRequest
0 голосов
/ 02 ноября 2019

Я работаю над большим проектом со многими библиотеками. Я столкнулся с конфликтом функций с dplyr::select(). Очевидно, что где-то загружена другая библиотека, которая также имеет функцию select(). Как я могу выяснить, какой из них?

> iris %>% select("Species")
Error in select(., "Species") : unused argument ("Species")

(я знаю, что в данном конкретном случае конфликт вызван MASS::select(), и я могу избежать его с помощью dplyr::select("Species"), но я хочу знать, как определить, какойпакет R обычно используется при возникновении конфликта.)

Этот вопрос отличается от , какая функция / пакет конфликтует с dplyr в R? , потому что я спрашиваю в более общем смысле, как найтипричина конфликта функций, а не конкретная причина конфликта select(). Некоторые ответы могут быть одинаковыми, но читатели не узнают об этом из названия вопроса.

1 Ответ

3 голосов
/ 02 ноября 2019

Пакет с конфликтом полезен, загружается либо до, либо после возникновения конфликта (или вы знаете об этом!)

> iris %>% select("Species")
Error in select(., "Species") : unused argument ("Species")
> library(conflicted)
> iris %>% select("Species")
Error: [conflicted] `select` found in 2 packages.
Either pick the one you want with `::`
* MASS::select
* dplyr::select
Or declare a preference with `conflict_prefer()`
* conflict_prefer("select", "MASS")
* conflict_prefer("select", "dplyr")

Base R также обеспечивает понимание конфликтов при загрузке библиотек, описанный в разделе «Конфликты» страницы справки ?library. Это может быть полезным решением для разрешения конфликтов после их обнаружения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...