Henrik Bengtsson为互联网提供了一种在R创建S3泛型的好方法,而不必担心它们是否在2002年之前创建过。

他的函数setGenericsS3的作用基本上是:

  • 检查名称是否正常
  • 检查是否存在具有该名称的功能

如果是这样,

  • 检查它是否是通用的
  • 如果不是,请将其重命名为.default并创建泛型

如果没有,只需创建通用。

事实证明,当您自己的软件包中没有可用的代码时,自动创建泛型非常有用。 当我们走过这个R时代时,我想知道现在在R中实现相同的正确方法是什么。 我在R中找不到isS3Generic()或类似的函数,Henrik Bengtsson的代码源自R 2.14中引入的强制命名空间。 我记得我已经看到了实现同样目标的其他方法,但找不到它们。

编辑:我特意找S3。 函数isGeneric()仅适用于S4,例如对于anova (这是一个S3泛型):

> isGeneric('anova')
[1] FALSE
> anova
function (object, ...) 
UseMethod("anova")
<bytecode: 0x04dc7a18>
<environment: namespace:stats>

===============>>#1 票数:1 已采纳

您可以使用isGenericS3的功能R.methodsS3包。 请参阅以下代码:

library(R.methodsS3)
isGenericS3(anova)
# [1] TRUE

  ask by Joris Meys translate from so

未解决问题?本站智能推荐: