> -----Original Message-----
> From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Glenn
> Schultz
> Sent: Tuesday, October 20, 2015 10:36 AM
> To: R Help R
> Subject: [R] Creating S4 class with a slot as an array
> 
> Hello All,
> 
> I am trying to create an S4 class with a slot that is an array.  Below is the 
> code I
> tried but I have missed something.  Any suggestions are appreciated.
> 
> setClass("CashFlow",
> representation(
> CashFlowArray = "array"))

probably here you would also like to provide a prototype

 setClass("CashFlow",
      representation(CashFlowArray="array"),
      prototype=prototype(CashFlowArray=array(numeric(), c(0, 0, 0))))

> 
> setMethod("initialize",
> signature = "CashFlow",
> function(.Object,
> CashFlowArray = "array"
> ){

.Object is the prototype, so the next line...

> .Object@CashFlowArray

references the prototypes' default value for the slot, without modifying it, 
and then...

> return(.Object)

returns the unmodified object, never getting to the following line...

> callNextMethod(.Object,...)

which would have passed the prototype and all arguments that are _not_ 
CashFlowArray on to the default 'initialize' method.

Maybe you meant

setMethod("initialize", "CashFlow", function(.Object, ..., 
CashFlowArray=array()) {
    callNextMethod(.Object, ..., CashFlowArray=CashFlowArray)
})

or, since the initialize method is now not doing anything, simply not defining 
it in the first place.

Martin Morgan

> })
> CashFlow <-function(CashFlowArray = array()){ new("CashFlow",
> CashFlowArray = CashFlowArray) }
> 
> CFTest <- array(data = 2, c(360,8))
> 
> Test <- CashFlow(CashFlowArray = CFTest)
> 
> Thanks,
> Glenn
> ______________________________________________
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-
> guide.html
> and provide commented, minimal, self-contained, reproducible code.


This email message may contain legally privileged and/or confidential 
information.  If you are not the intended recipient(s), or the employee or 
agent responsible for the delivery of this message to the intended 
recipient(s), you are hereby notified that any disclosure, copying, 
distribution, or use of this email message is prohibited.  If you have received 
this message in error, please notify the sender immediately by e-mail and 
delete this email message from your computer. Thank you.
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to