WedX - журнал о программировании и компьютерных науках

Как определить источник конфликта функций в R

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

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

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

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

r
02.11.2019

  • Попробуйте getAnywhere(x = "select") 02.11.2019
  • См. список замаскированных функций в R 02.11.2019
  • Я получаю этот конкретный конфликт с MASS, который может быть загружен каким-то другим пакетом. 02.11.2019
  • Если вы введете select, после дампа функции он заканчивается чем-то вроде <environment: namespace:...>, где ... указывает пакет, в котором была найдена функция (по пути поиска). В качестве альтернативы вы можете не видеть тело функции с помощью environment(select), которое должно просто указать вам среду/пространство имен. 02.11.2019
  • Вау, эти функции меняют правила игры... жаль, что я не знал их раньше! 02.11.2019
  • @ r2evans Отлично, это самый простой и прямой подход. 02.11.2019
  • @NelsonGon Дурак не отвечает на вопрос, как упоминает ОП в своем последнем абзаце. 02.11.2019
  • @Rui Barradas отозван! Первоначальный пост был отредактирован, я думаю. В любом случае, комментарии к этому посту весьма полезны. Было бы здорово, если бы они сделали из них ответ сообщества. 02.11.2019
  • Да, спасибо, это было редактирование в ответ на предложение обмана. 02.11.2019

Ответы:


1

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

> 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. Это может быть полезным решением для разрешения конфликтов после их обнаружения.

02.11.2019
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]