当前位置 : 主页 > 手机开发 > 其它 >

如何为继承的槽定义S4原型

来源:互联网 收集:自由互联 发布时间:2021-06-19
我有一个基类(我们称之为“A”),其表示形式与许多其他类相同. 因此,我定义其他类,如“B”,以包含此类. 我想设置这些其他类(B)的原型,以包含从A继承的插槽的默认值.我认为这很自然:
我有一个基类(我们称之为“A”),其表示形式与许多其他类相同.

因此,我定义其他类,如“B”,以包含此类.

我想设置这些其他类(B)的原型,以包含从A继承的插槽的默认值.我认为这很自然:

setClass("A", representation(a="character"))
setClass("B", contains="A", prototype(a = "hello"))

但它会产生错误:

Error in representation[!slots] : object of type 'S4' is not subsettable

不知道为什么会这样.如果我省略原型,我可以做:

setClass("B", contains="A")

然后破解我自己的生成器功能:

new_B <- function(...){ 
           obj <- new("B", ...)
           obj@a = "hello"
           obj
         }

然后使用new_B()基于原型创建我的对象,但与使用通用生成器new(“B”)和拥有我的原型相比,这非常粗糙和丑陋……

你只需要命名参数:

setClass("A", representation(a="character"))
setClass("B", contains="A", prototype=prototype(a="hello"))
网友评论