этот вопрос является чем-то вроде продолжения этого вопроса .
Рассмотрим следующий пример
set.seed(1)
x <- cumsum(rnorm(10))
y <- stats::arima(x, order = c(1, 0, 0))
length(stats::fitted(y))
[1] 0
Пока все хорошо: ноль возвращается, потому что теперь R не использует stats::fitted
для объекта класса Arima
.
Далее в моем коде мне нужна одна функция из пакета forecast
. Я не прикрепляю пакет, я просто загружаю его, используя обозначение ::
.
В моем коде ниже я буду загружать его напрямую, используя requireNamespace
.
requireNamespace("forecast", quietly = TRUE)
length(stats::fitted(y))
[1] 10
И вдруг одна и та же команда возвращает другой результат.
Я понимаю, почему это происходит (и я надеюсь, что я говорю это правильно): при загрузке пакета forecast
новый метод для универсальной функции fitted
(а именно fitted.Arima
) загружается в пространство имен, что приводит к другому результату .
Для меня это поведение довольно раздражает: есть ли способ выбрать конкретный метод для fitted
?
Я прочитал эту главу , но не понял, как обойти эту проблему.
Я также пытался выгрузить пакет forecast
из пространства имен, но безуспешно:
unloadNamespace("forecast")
length(stats::fitted(y))
[1] 10
Кажется, что после загрузки пакета я не могу использовать старый метод fitted
.
Мне интересно, как справиться с этими ситуациями.
EDIT
Как указано в комментариях после unloadNamespace("forecast")
я получаю это
isNamespaceLoaded("forecast")
[1] FALSE
Но установленный methods
по-прежнему включает fitted.Arima
.