[R] Cacheing computationally expensive getter methods for S4 objects
Steve Lianoglou
mailinglist.honeypot at gmail.com
Wed Oct 14 20:31:22 CEST 2009
Hi,
I was wondering if there was a way to store the results of a
computationally expensive "getter" call on an S4 object, so that it is
only calculated once for each object.
Trivial example: let's say I want to cache the "expensive" area
calculation of a square object.
setClass("Square",
representation(
length='numeric',
width='numeric',
area='numeric'
),
prototype(
length=0,
width=0,
area=-1
)
)
setGeneric("area", function(x) standardGeneric("area"))
setMethod("area", "Square",
function(x) {
if (x at area == -1) {
x at area <- x at width * x at height
}
x at area
})
Now the first time I call ``area(my.square)`` it computes
``my.square at width * my.square at height``, but each subsequent call
returns ``x at area`` since the area computation has already been calc'd
and set for this object.
Is this possible? I'm guessing the R pass by value semantics is going
to make this one difficult ... is there some S4 reference I missed
that has this type of info from?
Thanks,
-steve
--
Steve Lianoglou
Graduate Student: Computational Systems Biology
| Memorial Sloan-Kettering Cancer Center
| Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact
More information about the R-help
mailing list