[Rd] Strange behavior of assign in a S4 method.

From: Christophe Genolini <cgenolin_at_u-paris10.fr>
Date: Mon, 15 Mar 2010 11:33:17 +0100


Hi the list,
I define a method that want to change an object without assignation (foo(x) and not x<-foo(x)) using deparse and assign. But when the argument of the method does not match *exactly* with the definition of the generic function, assign does not work... Anything wrong?

Christophe

#------ Does not work ------#
setGeneric("foo1",function(x,...){standardGeneric("foo1")})

setMethod(f="foo1",signature="numeric",definition=

    function(x,y=1,...){

        nameX<-deparse(substitute(x))
        x <- x^2
        assign(nameX,x,envir=parent.frame())
    }
)

e <- 3
foo1(e,y=5)
cat(e)

#------ Does work ------#
setGeneric("foo2",function(x,...){standardGeneric("foo2")})

setMethod(f="foo2",signature="numeric",definition=

    function(x,...){

        nameX<-deparse(substitute(x))
        x <- x^2
        assign(nameX,x,envir=parent.frame())
    }
)

e <- 3
foo2(e,y=5)
cat(e)



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Mon 15 Mar 2010 - 10:38:11 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 16 Mar 2010 - 09:41:06 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive