plot.ACF 是否已从 NLME 的前端移除?还是我不小心更改了某些设置?

Was plot.ACF removed from the front end of NLME? Or did I change some setting on accident?

我正在使用 R 分析线性混合效应模型 (nlme::lme)。我想在 alpha 级别用虚线绘制 ACF 值(如 plot.ACF 那样)。

require(nlme)之后,我可以运行 ACF了,但是plot.ACF还是不行。我可以通过 nlme:::plot.ACF 访问它,这意味着它被指定为隐藏功能。软件包的这个功能是否出于某种原因被搁置了?如果不是,还有其他可能的解释吗?有谁知道我可以让包导出它的方法(即使在更新之后)?

是的,对nlme包的前端是隐藏的(即不导出);不知道有没有变化。

> nlme::plot.ACF
Error: 'plot.ACF' is not an exported object from 'namespace:nlme'

但是,您可以使用 ?plot.ACF 访问它的帮助,其中演示了以下用法:

## S3 method for class 'ACF'
plot(x, alpha, xlab, ylab, grid, ...)

请注意,它并不是建议使用 plot.ACF,而是建议使用 plot。这是可行的,因为 plot 函数是面向对象的,因此只要在 ACF 对象上调用 plot 时,就会在幕后调用 plot.ACF

也就是说,要绘制一个 ACF 对象,您应该只键入 plot,而不是 plot.ACF

据我所知,plot.ACF 函数从未导出过。我可以通过 NAMESPACE 文件找到的来自 https://cran.r-project.org/src/contrib/Archive/nlme/ 的最早版本的 nlme 是 nlme_3.1-40(日期:2003-05-16),并且该函数本来是不可见的(在控制台中).它仍然可以通过 methods 函数访问,并且代码可以通过三点机制 (:::) 或 getAnywhere 函数访问。

getAnywhere("plot.ACF")  Retruns formal parameters, funciton body and information about functions environment
getS3method("plot", "ACF")  # returns same code as getAnywhere

x <- methods(class="ACF")
str(x)
#--------------
 'MethodsFunction' chr "plot.ACF"
 - attr(*, "info")='data.frame':    1 obs. of  4 variables:
  ..$ visible: logi FALSE
  ..$ from   : Factor w/ 1 level "registered S3method": 1
  ..$ generic: chr "plot"
  ..$ isS4   : logi FALSE
 - attr(*, "byclass")= logi TRUE

我为我之前有点刻薄的评论道歉,因为在重新阅读您的 post 时,您似乎确实明白这些功能是可用的,只是不可见。仍然不清楚的是为什么你认为它是可见的。

如果要 plot.ACF 导出,可以将其添加到 NAMESPACE 文件中的导出函数列表中并重建包。或者您可以使用以下方式即时导出:

plot.ACF <- getAnywhere("plot.ACF")