gpt4 book ai didi

r - 使用 R 的泛型函​​数,何时以及为什么?

转载 作者:行者123 更新时间:2023-12-03 22:28:43 24 4
gpt4 key购买 nike

我正在开发 R 包的重大升级,作为更改的一部分,我想开始使用 S3 方法,以便我可以使用通用绘图、摘要和打印功能。但我想我并不完全确定我通常理解为什么以及何时使用泛型函数。

例如,我目前有一个名为 logLikSSM 的函数,它计算状态空间模型的对数似然。我可以不使用这个函数,而是创建函数 logLik.SSM 或类似的函数,因为在 R 中有通用函数 logLik。这样做的好处是 logLik 比 logLikSSM 写得更短,但真的有任何其他点吗?这个?

类似的情况,在 stats 包中有一个叫做模拟的通用函数,所以理论上我可以用它代替模拟 SSM。但是现在模拟函数的描述告诉该函数用于“模拟响应”,但我的函数实际上模拟了隐藏状态,因此它确实不适合模拟函数的描述。所以可能在这种情况下我不应该使用泛型函数,对吗?

如果这个问题在这里太模糊,我深表歉意。

最佳答案

从 R 的核心创建泛型方法的优点包括:

  • 便于使用。已经熟悉这些泛型的包的用户将不会记住,从而更容易使用您的包。他们甚至可以在不阅读文档的情况下完成一定数量的工作。如果您想出自己的名字,那么他们必须发现并记住新名字,这会增加认知负担。
  • 利用现有功能。此外,使用您为其创建方法的泛型的任何其他函数也可以自动使用您的方法;否则,他们将不得不改变。例如,AIC用途 logLik .

  • 一个缺点是泛型涉及额外的调度级别,如果 logLik在优化的内部循环中可能会产生影响(尽管可能不是实质性的)。在这种情况下,您可以检查调用泛型与直接调用方法的性能,如果后者有显着差异,则使用后者。

    如果您的函数具有与 R 核心中的泛型完全不同的目的,那么它可能更令人困惑而不是有用,因此在这种情况下,您可能不创建方法而是拥有自己的函数名称。

    您可能想阅读 zoo Design manual (请参阅该页面底部附近 Vignettes 下的 zoo Design 链接),其中讨论了动物园包中的设计理念。这些包括这里讨论的想法。

    编辑:增加了缺点。

    关于r - 使用 R 的泛型函​​数,何时以及为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9734646/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com