Заставить одно пространство имен переопределять / иметь приоритет над другим без изменения порядка загрузки? - PullRequest
2 голосов
/ 20 октября 2019

select() принадлежит как пространствам имен dplyr, так и MASS.

Неопределенность относительно того, что вызывается с select(), может быть решена с помощью

  1. Загрузка dplyr после загрузка MASS
  2. Использование dplyr::select вместо простого select

Есть ли какое-либо другое решение, предпочтительно такое, которое предполагает назначение библиотеки для приоритета над другими?

Дополнительное примечание: я знаю вВ мире CSS есть атрибут !important, который можно добавить к стилю, чтобы он перекрывал другие. Интересно, существует ли нечто подобное в R, которое можно вызвать, когда library(dplyr).

1 Ответ

2 голосов
/ 20 октября 2019

Не уверен, что это полностью решит вашу проблему, но одним из вариантов может быть использование conflict_prefer() из conflicted библиотеки. Из документации:

threat_prefer () позволяет объявлять «победителей» конфликтов. Вы можете объявить конкретное соединение (т. Е. Dplyr :: filter () побеждает base :: filter ()), или общий победитель (т. Е. Dplyr :: filter () побеждает всех желающих).

Допустим, вы хотите использовать between() из data.table:

conflict_prefer("between", winner = "data.table", quiet = FALSE)

[conflicted] Removing existing preference
[conflicted] Will prefer data.table::between over any other package
...