tofesi@web.de
2004-Sep-03 13:27 UTC
[R] Changing the value of an object's slot in a method
Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Received-SPF: none (hypatia: domain of tofesi at web.de does not designate permitted sender hosts) X-Virus-Scanned: by amavisd-new at stat.math.ethz.ch X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on hypatia.math.ethz.ch X-Spam-Level: X-Spam-Status: No, hits=0.2 required=5.0 tests=BAYES_50,NO_REAL_NAME autolearn=no version=2.63 Hi all, I want to modify the value of an object's slot from within a method, as in the example below: setClass("MyClass", representation(flag="numeric")) if( !isGeneric("flipFlag") ) setGeneric("flipFlag", function(object) standardGeneric("flipFlag")) setMethod("flipFlag","MyClass", function(object) { # flips object at flag from 0 to 1, or from 1 to 0 }) This should work in a similar way as in other object-oriented languages where it would be written as 'object.flipFlag()'. However, there seems to be a problem with the call-by-value semantics of R, and the updated value is lost on leaving the function. The following two options are not suitable for our task: 1.) Directly assigning to 'flag' via a method created by 'setReplaceMethod'. The method 'flipFlag' should require no parameters. 2.) Returning a new object, so that the user has to assign the new object to the old variable. Thanks in advance, Tobi. ________________________________________________________________ Verschicken Sie romantische, coole und witzige Bilder per SMS!