Janko Thyson
2011-May-26 17:56 UTC
[Rd] Reference Classes: strange behavior when trying to change class def in the same R session
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
Reasonably Related Threads
- Reference classes: error with missing arguments in method calls
- Creating a reference class object from a class definition in a package fails
- WG: Reference classes: error with missing arguments in method calls
- Reference Classes: removing methods -> implications for objects/instances of that class
- Reference Classes: getter and setter functions/methods and possible shortcuts