[R] Can an object reference itself?

hadley wickham h.wickham at gmail.com
Fri Jan 15 19:34:44 CET 2010


On Fri, Jan 15, 2010 at 5:30 PM, Janko Thyson
<janko.thyson at ku-eichstaett.de> wrote:
> Dear List,
>
> I am not really familiar with any other language than R, but I’ve heard that
> in other languages there is something called “self referencing”.
>
> Here’s what I’m trying to get an answer for:
> Suppose there is a function that takes as its input a value of a slot of an
> S4 object. The function itself is stored in another slot of the SAME S4
> object. Is it then possible to have the function automatically “recognize”
> the name of the object in which slot it is placed via some sort of “self
> referencing” of the S4 object (to avoid having to explicitly state the
> required function argument for different S4 object instances with different
> names)?
>
> I hope the following code snippets will give you an idea what I’m trying to
> do:
>
> obj.for.slot <- data.frame(a=1); obj.for.slot <- data.frame(a=100)
> save(obj.for.slot, file="C:/obj.1.for.slot.Rdata"); save(obj.for.slot,
> file="C:/obj.2.for.slot.Rdata")
>
> slotfun <- function(obj.name)
> {
>        file.fqn.char <- paste("file.fqn <- ", obj.name, "@file.fqn",
> sep="")
>        eval(parse(text=file.fqn.char))
>        load(file=file.fqn)
>        return(obj.for.slot)
> }
>
> setClass(
>        Class="Testclass",
>        representation=representation(
>                file.fqn="character",
>                data="function"
>        ),
>        prototype=prototype(
>                file.fqn="blabla",
>                data=slotfun
>        )
> )
>
> test            <- new("Testclass")
> test.mod        <- new("Testclass")
>
>
> test at file.fqn           <- "C:/obj.1.for.slot.Rdata"
> test.mod at file.fqn       <- "C:/obj.2.for.slot.Rdata"
>
> test at data(obj.name="test")
> test.mod at data(obj.name="test.mod")

An object does not have a unique name.  What would happen in the
following situations?

t3 <- test.mod
tests <- list(
  test,
  test.mod
)

Hadley

-- 
http://had.co.nz/



More information about the R-help mailing list