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文件。