plot.ACF是从NLME的前端删除的吗?还是我在事故中改变了一些设置?

问题描述 投票:1回答:2

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

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

r nlme
2个回答
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
投票

据我所知,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")
© www.soinside.com 2019 - 2024. All rights reserved.