Hi- I used to use "<<-" to do assignment inside a class method, and just found that now it is broken in R 2.0. For example, the following code ----------------------------------------------------------------------- setClass( "myclass", representation(x="numeric") ) setGeneric("incrXByOne", function(obj) standardGeneric("incrXByOne")) setMethod( "incrXByOne", "myclass", function(obj) obj at x <<- obj at x + 1 ) incrXByOne( new("myclass") ) ----------------------------------------------------------------------- will give an error message like: Error in incrXByOne(new("myclass")) : Object "obj" not found ## R failed to trace the object back to the GlobalEnv... It used to work under R1.7 - 1.9. I don't know whether this is a bug or a new feature... Anyone can recommend a workaround? Thanks, Gang ----------------------------- debian unstable, kernel 2.6.8> versionplatform i386-pc-linux-gnu arch i386 os linux-gnu system i386, linux-gnu status major 2 minor 0.0 year 2004 month 10 day 04 language R
Witold Eryk Wolski
2004-Nov-11 07:30 UTC
[R] "<<-" assignment no long work in class methods
Gang Liang wrote:>Hi- > >I used to use "<<-" to do assignment inside a class method, and >just found that now it is broken in R 2.0. For example, the >following code > >----------------------------------------------------------------------- >setClass( "myclass", representation(x="numeric") ) >setGeneric("incrXByOne", function(obj) standardGeneric("incrXByOne")) >setMethod( "incrXByOne", "myclass", function(obj) obj at x <<- obj at x + 1 ) > > >Hi, What (my guess) you want to define is: setMethod( "incrXByOne", "myclass", function(obj) {obj at x <- obj at x + 1;obj}) You do not need "<<-" to assign to a function argument? Its in my view even erroneous. This S code gives an error too. test <- function(x) { x$bla<<-x$bla + 1 } test(1) Error in test(1) : Object "x" not found /E>incrXByOne( new("myclass") ) >----------------------------------------------------------------------- > >will give an error message like: > > Error in incrXByOne(new("myclass")) : Object "obj" not found > ## R failed to trace the object back to the GlobalEnv... > >It used to work under R1.7 - 1.9. I don't know whether this is a >bug or a new feature... > >Anyone can recommend a workaround? > >Thanks, Gang > >----------------------------- >debian unstable, kernel 2.6.8 > > > >>version >> >> > >platform i386-pc-linux-gnu >arch i386 >os linux-gnu >system i386, linux-gnu >status >major 2 >minor 0.0 >year 2004 >month 10 >day 04 >language R > >______________________________________________ >R-help at stat.math.ethz.ch mailing list >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > > >-- Dipl. bio-chem. Witold Eryk Wolski MPI-Moleculare Genetic Ihnestrasse 63-73 14195 Berlin tel: 0049-30-83875219 __("< _ http://www.molgen.mpg.de/~wolski \__/ 'v' http://r4proteomics.sourceforge.net || / \ mail: witek96 at users.sourceforge.net ^^ m m wolski at molgen.mpg.de