我用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
函数是面向对象的,因此只要在plot.ACF
对象上调用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
我为我之前的,有点讽刺的评论道歉,因为在重新阅读你的帖子时,你似乎明白这些功能是可用的,只是不可见。目前还不清楚为什么你认为它是可见的。
如果要将plot.ACF导出,可以将其添加到NAMESPACE文件中的导出函数列表中并重新生成包。或者你可以动态导出:
plot.ACF <- getAnywhere("plot.ACF")