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

vQ


I'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

______________________________________________
R-help@r-project.org 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.

Reply via email to