On 22/01/2009 4:50 PM, Yi Zhang wrote:
i was sort-of joking, though it's a real option if you want it.but seriously, there's no reason for the &%#* lamenting: x <- 1 '<-' = function(x,y) 0 x <- 2 # 0 .Primitive('<-')(x,2) x # 2 base::'<-'(x, 3) x # 3 base::'<-'('<-', base::'<-') x <- 4 x # 4 vQI'm still not sure if this can help solve my problem. If I want to overwrite the `<-` operator for a particular type of objects, but preserve its effect for other regular objects (in other words, if I do x<-5 with my new <-, x will be 5 and nothing strange happens), then what should I put in the [ ] below? old <- `<-` old(`<-`, function(x, value){ if (value is my type) do something [ ] # to bind the object value to symbol x: no matter what you do here, the binding/assignment is local within this function?! }) Hope I have made myself clear. Thanks,
You can use parent.frame() as the pos or envir argument to assign(), and then the assignment happens in the caller's frame. And assign() is also another way out if you overwrite <- with something that doesn't work; just call it to reassign base::`<-` to it. Or just rm(`<-`) to unhide the original one.
Duncan Murdoch ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.

