Ситуация, которая часто возникает в SO, это пакеты с перезаписанными функциями, вызывающими непредвиденные ошибки в пакетах, которые зависят от определенных определений функций (например, MASS::negative.binomial
и GLMMadaptive::negative.binomial
имеют разные аргументы, что приводит к сбою некоторых зависимых пакетов),
Если функция коллизии экспортируется из пакета, исправление, не требующее закрытия и открытия R
, часто можно получить как
pck <- find("negative.binomial")
if(length(pck) > 0){
suppressWarnings(sapply(unlist(pck), function(x)
detach(x, unload = TRUE,
force = TRUE, character.only = TRUE))
}
if(length(find("negative.binomial")) == 0)
cat("Succes!\n")
(кредит на популярный вопрос здесь , для идеи.)
Но в случае, если функция или метод функции не экспортируются, например.lme4:::influence.merMod
и car:::influence.merMod
, find
не найдут функцию
>library(lme4)
>library(car)
>find("influence.merMod")
character(0)
Если задан только метод функции в виде строки, как один find
пакет attached
, который включает в себяконкретная неэкспортируемая функция или метод?