Hi R friends,
I'm still studying S4 classes and I have a question about slot assignment. Why
would I have to use a special setter method [example 2 below] if I can assign
data to a slot directly when I call new() [example 1 below]?
## first way to do it (the idiosyncratic way?)
setClass(Class = "TestClass", representation = representation(myDf =
"data.frame"))
setGeneric(name = "doStuff", def = function(object,
...){standardGeneric("doStuff")})
setMethod(f = "doStuff",
signature = "TestClass",
definition = function(object, ...) {
return( obj...@mydf )
})
df_a <- data.frame(cbind(letters=letters, digits=runif(26)))
instance <- new(Class = "TestClass", myDf = df_a) # direct slot assignment. Is
this bad? If so, why?
doStuff(instance)
## second way to do it (the R way?)
setClass(Class = "TestClass", representation = representation(myDf =
"data.frame"))
setGeneric(name = "doStuff", def = function(object,
...){standardGeneric("doStuff")})
setMethod(f = "doStuff",
signature = "TestClass",
definition = function(object, ...) {
return( obj...@mydf )
})
setGeneric(name = "setDoStuff<-", def = function(object,
value){standardGeneric("setDoStuff<-")})
setReplaceMethod(f = "setDoStuff",
signature = "TestClass",
definition = function(object, value) {
obj...@mydf <- value
return( object )
})
df_b <- data.frame(cbind(letters=LETTERS, digits=runif(26)))
instance <- new(Class = "TestClass")
setDoStuff(instance)<-df_b
doStuff(instance)
Thank you in advance for your replies!
Cheers!!
Albert-Jan
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
All right, but apart from the sanitation, the medicine, education, wine, public
order, irrigation, roads, a fresh water system, and public health, what have
the Romans ever done for us?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[[alternative HTML version deleted]]
______________________________________________
[email protected] mailing list
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.