这个问题有点后续这个问题 https://stackoverflow.com/questions/55361133/how-to-make-your-ranking-values-show-integer-without-decimals-in-r-data-table/55361241#55361241。
考虑下面的例子
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
?
我读本章 http://r-pkgs.had.co.nz/namespace.html但没有弄清楚如何规避这个问题。
我也尝试卸载forecast
从命名空间打包,但没有成功:
unloadNamespace("forecast")
length(stats::fitted(y))
[1] 10
看来一旦我加载了包我就不能使用旧的方法了fitted
。
我想知道如何处理这些情况。
EDIT
正如之后评论中指出的unloadNamespace("forecast")
我明白了
isNamespaceLoaded("forecast")
[1] FALSE
But methods
已安装仍包括fitted.Arima
.