我有一个基类(我们称之为“A”),其表示形式与许多其他类相同. 因此,我定义其他类,如“B”,以包含此类. 我想设置这些其他类(B)的原型,以包含从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"))