Dear list,

I'm getting some strange behavior with Reference Classes every once in a while and I can't really put my finger on the cause. It'd be great if someone using Reference Classes could check if he/she experiences similar problems:

The thing is that when I alter the definition of a Reference Class in a running R session and source the respective file containing the class def, sometimes the changes are reflected and sometimes not. I also tried to explicitly remove the class via 'removeClass()', and that too works at times and then again it doesn't. If it doesn't work it means that I have to shut down the session and start a new one, which is quite bothersome. I thought that it maybe had something to do with whether an explicit 'initialize' method has been defined or not, but the "bug" was still erratic.

Here's some code that you can test it with:

# S4 Classes
setClass(Class="Horst", representation=list(a="numeric"))
horst <- new("Horst", a=5)
horst
removeClass("Horst")
horst <- new("Horst")
setClass(Class="Horst", representation=list(a="character"))
horst <- new("Horst", a="blabla")
horst

# Reference Classes
setRefClass(Class="Horst", fields=list(a="numeric"), methods=list(
        foo=function() print("hello world!")))
setMethod(
    f="initialize",
    signature=signature(.Object="Horst"),
    definition=function(
        .Object
    ){
        return(.Object)
    }
)
gen <- getRefClass("Horst")
horst <- gen$new()
horst$a
horst$a <- 5
horst$a
horst$foo()

removeClass("Horst")

setRefClass(Class="Horst", fields=list(a="character"), methods=list(
        foo=function(x) print(x)))
gen <- getRefClass("Horst")
horst <- gen$new()
horst$a
horst$a <- 5
horst$a
horst$foo(x=5)

Most of the times the change from the first to the second config of ref class "Horst" produced a problem and required a 'removeClass()'. Strangely, going from the second config back to the first usually works without 'removeClass()'.

Thanks in advance for taking the time to play this through,
Janko

R version 2.13.0 (2011-04-13)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=German_Germany.1252  LC_CTYPE=German_Germany.1252
[3] LC_MONETARY=German_Germany.1252 LC_NUMERIC=C
[5] LC_TIME=German_Germany.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
[1] codetools_0.2-8 tools_2.13.0

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to