如何正确地执行以下操作:
我有一个带有插槽parentSpectrum,childSpectra,name的类SpectraSet (为了简单起见)
名称为字符()
parentSpectrum应该包含一个ParentSpec类的对象(因此它属于ParentSpec类型)
childSpectra应包含ChildSpec类的n个对象。但是,我不能将其设置为ChildSpec类型,因为向量只能包含原子类型。这种情况下的最佳实践是什么?我可以把它变成一个list(),然后在有效性检查中输入check,但是有没有更好的方法呢?
发布于 2014-11-07 21:21:10
以下是我在过去提供的related anaswers。
通常最好重新考虑类设计,这样ChildSpec本质上就是一个向量--最低限度地支持长度()和子集[,[.你上面的问题就解决了,设计与R的矢量化方向是一致的,而且常见的操作可能是有效的。
实现您自己的类型检查列表的另一种方法(实际上是另一种方法)是重用Biocdonductor的S4Vectors类中的基础结构。
.X = setClass("X", representation(x="numeric"))
.XList = setClass("XList", contains="SimpleList",
prototype=prototype(elementType="X"))并付诸行动
> xl = .XList(listData=list(.X(x=1), .X(x=2)))
> xl
XList of length 2
> xl[[2]]
An object of class "X"
Slot "x":
[1] 2https://stackoverflow.com/questions/26799630
复制相似问题