Re: [R] Question about setReplaceMethod

From: Martin Morgan <mtmorgan_at_fhcrc.org>
Date: Thu, 24 May 2007 19:35:39 -0700

Hi Adschai --

You'll want to return the value whose slot you have modified:

setReplaceMethod("setX", "foo",

                 function(this,value) {
                     this_at_x <- value
                     this               # add this line
                 })

Martin

adschai_at_optonline.net writes:

> Hi
>
> I have the code like I show below. The problem here is that I have a
> setReplacementMethod to set the value of my class slot. However,
> this function doesn't work when I call it within another function
> definition (declared by setMethod) of the same class. I do not
> understand this behavior that much. I'm wondering how to make this
> work? Any help would be really appreciated. Thank you.
>
> setClass("foo",
> representation(x="data.frame", y="character"))
> setGeneric("setX<-", function(this, value), standardGeneric("setX<-"))
> setReplaceMethod("setX", "foo",
> function(this,value) {
> this_at_x <- value
> })
> setGeneric("generateFrame", function(this), standardGeneric("generateFrame"))
> setReplaceMethod("generateFrame", "foo",
> function(this) {
> frame <- read.csv(file="myfile.csv", header=T) # read some input file
> this_at_x <- frame # this doesn't replace the value for me
> setX(this) <- frame # this doesn't replace the value for me
> frame # instead I have to return the frame object
> })
> foo <- function(x,y) {
> objFoo <- new("foo", x=data.frame(NULL), y="")
> frame <- generateFrame(objFoo) # after this point, nothing got assigned to objFoo_at_x
> setX(objFoo) <- frame # this will work (why do I have to duplicate this??)
> }
> - adschai
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help_at_stat.math.ethz.ch 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.

-- 
Martin Morgan
Bioconductor / Computational Biology
http://bioconductor.org

______________________________________________
R-help_at_stat.math.ethz.ch 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.
Received on Fri 25 May 2007 - 02:41:30 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 25 May 2007 - 04:31:19 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.