R:S3和S4

我想在R中创build一个类,我应该使用S3还是S4类?

我读了很多关于他们的不同的东西,有一个比另一个更优越吗?

S3只能派发它的第一个参数,而S4可以派发多个参数。 如果你想能够写函数foo方法应该做不同的事情,如果给予一个类"bar"对象或给定的对象类"bar" "foobar" ,或给定的对象类"barfoo""foobar" ,那么S4提供了一个更好的方式来处理这种复杂性。

S3非常简单,易于实现,但并不是一个真正的面向对象的系统。 这种简单的代价是强制属于某个类的对象具有正确的组件/插槽等。使用S3,我可以执行class(obj) <- "lm"事情,方法派发将使用"lm"类的方法当传递obj ,但不能保证obj实际上是类"lm"的对象。

S3很容易实现,文件并且需要程序员更less的额外知识。

使用哪个只能是你可以决定的。 道格·贝茨(Doug Bates)(2003)曾经说过,对于新项目,他会使用S4而不是S3。 我还没有需要使用S3方法以外的任何东西。

所以我会坐下来考虑一下你想在这些类上运行的类和方法。 想想你想要的function,那可能会指向一个系统或另一个系统。

道格拉斯·贝茨。 将软件包转换为S4 。 R新闻,3(1):6-8,2003年6月

什么参考类 ? 这不是S3,有些人认为它是在S4之上的语法糖,但它是很多的糖。

举一个简短的例子,查看几个月前在这里提出的问题。

我仍然需要找出如何为这些类编写Rd文件。