从NLME的前端删除了plot.ACF吗?还是我意外更改了某些设置?

时间:2019-03-26 01:23:56

标签: r nlme

我正在使用R分析线性混合效果模型(nlme :: lme)。我想在Alpha级别上用虚线绘制ACF值(就像plot.ACF一样)。

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

2 个答案:

答案 0 :(得分:1)

是的,它是从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函数是面向对象的,因此,只要在plot.ACF对象上调用plot,就会在后台调用ACF

也就是说,要绘制ACF对象,只需键入plot,而不是plot.ACF

答案 1 :(得分:1)

据我所知,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

对于较早的,有些过时的评论,我深表歉意,因为在重新阅读您的帖子后,您似乎了解该功能可用,只是看不见。仍然不清楚的是您为什么认为它是可见的。

如果要导出plot.ACF,可以将其添加到NAMESPACE文件中的导出函数列表中,然后重新生成软件包。或者,您可以通过以下方式即时导出:

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