【问题标题】:R: Finding help for classes created by packagesR:为包创建的类寻找帮助
【发布时间】:2020-12-10 19:55:13
【问题描述】:

通常情况下,R 包包含多个函数,这些函数创建了一些 class 的对象,由包指定,通用或非通用 methods 适用于该类的所有对象。虽然通常很容易找到包中的函数,但我还没有找到任何同样直接的方法来为 S3 类找到 class 本身的精确描述。我认为这至少部分是故意的。类定义可以被视为一种内部工作方式,一方面,用户不必考虑,另一方面,可以由包创建者更改,希望人们不要依赖它们。

但是,我发现有时我想创建相同 class 的其他对象,这些对象与作为 class 方法的包函数一起使用。并且并不总是容易推断出对象必须具有哪些功能才能被封装函数使用,这些函数对 class 的对象执行各种操作,特别是因为不同函数创建的实例可能或可能不完全相同结构。

我目前正在研究的示例是由forecast 包的各种函数创建的forecast 对象。预测包提供了大量以预测对象为输入的函数。 Rob Hyndman 的This blog post 描述了一个进行交叉验证的函数,并需要一个 forecast 类的对象作为参数 tsCV 函数文档说它需要一个“forecastFunction”作为参数,它必须返回一个类 @ 987654334@ 并有一个单变量时间序列作为它的第一个对象(预测,一个假设)并且有一个参数h 给出了地平线。嗯,这听起来很容易。但是在 Hyndman 的相关教科书section 3.6 中,我们被告知预测对象包含有关预测方法、数据、点预测、预测区间、残差和拟合值的信息。这是很多事情,我不确定它们是否都是强制性的,或者是否有些是可选的,或者仅当您打算使用某些方法时才需要。而且我对类的强制性内部结构一无所知。

最后,我特别想知道作为预测包替代品的新寓言包是否使用相同的预测类机制并需要相同的内部结构。如果不是,它们有何不同。我无法在fpp3 或其他地方找到任何描述更改或包含class forecast 对象的类似描述的内容。

如果有一些简单的功能,我会感到尴尬,

you_should_know_this_dummy(package = “forecast”, class = “forecast”),

返回类的详细描述。但是我想尽办法都在寻找这样的功能,但没有找到。

【问题讨论】:

  • 我认为你能来的最接近的是dputstr 类的一个对象。 R 当然不强制执行 S3 类文档,实际上代码行 z <- structure(list(x = 1, y = 2), class = "blah") 创建了一个新 S3 类的一次性对象,该对象在任何地方都没有很好的描述。
  • 没有正式要求记录 S3 类,因此没有强制执行。每个包设计者都可以做他们喜欢的任何事情,因此不会有适用于所有包和类的一致方式。所以不可能从一般意义上回答这个问题。如果包作者不提供文档,你能做的最好的就是逆向工程,但这可能很脆弱。或许可以联系开发人员要求澄清。

标签: r class code-documentation help-system s3-classes


【解决方案1】:

好吧,我的错。我一直在努力寻找一种方法来查找类描述的帮助文件(我认为它不存在),以至于我忽略了在函数 forecast() 下的 class forecast 的一个很好的描述的存在。包手册forecast。这里是:

An object of class "forecast" is a list usually containing at least the following elements:
model     A list containing information about the fitted model
method    The name of the forecasting method as a character string
mean      Point forecasts as a time series
lower     Lower limits for prediction intervals
upper     Upper limits for prediction intervals
level     The confidence values associated with the prediction intervals
x         The original time series (either object itself or the time series used to create the model stored as object).
residuals  Residuals from the fitted model. For models with additive errors, the residuals will be x minus the fitted values.
fitted    Fitted values (one-step forecasts)

这仍然留下了一些未解决的问题,例如模型信息参数model 的格式,以及多变量模型的x 参数的格式。但我希望这些类似于交给或返回的那些,例如lm()。我认为这足以让我开始并希望出现信息错误。

我仍然不知道fable 包是否也使用class forecast 的对象。 forecast 包将 forecast() 函数记录为泛型。 fable 包没有记录泛型,尽管它有一个非常相似的函数列表,看起来像 methods,例如,forecast.whatever。如果我找出答案,我会在这里发布。

我还在寻找其他一些提供特定类型时间序列预测的软件包。我希望它们提供足够相似的输出,以便我可以使用预测/寓言函数进行显示、交叉验证等。我们拭目以待。

【讨论】: