Thanks, Luke. I would certainly be very happy to see any non-intrusive solution. The problem I'm dealing with is: I'm creating a new class which references some external resource (file or database) and I want to make the reference counting work. An example (-> means references): Initially we have symbol a -> object oa of my class -> file fa. Suppose then R code "b<-a" is executed. With no modification to the '<-' function, R would make another symbol b and bind it to oa. Imagine next "b[1]<-0" is executed. Here comes the trouble: R only knows to duplicate oa to another ob; the modification will be done to the underlying shared file fa. Of course, I have necessary code for overriding "[<-" and make that modification. The whole thing is because I'm not aware of any sharing of the external resource at the R level. That's the motivation for me to overwrite '<-' in the first place. Any potential alternative solutions?
On Fri, Jan 23, 2009 at 4:25 PM, <l...@stat.uiowa.edu> wrote: > While it _may_ be possible to make this work in current R (I don't > know if it is) this is a Really Bad Idea as it will affect every other > piece of R code run on the system. It also may not work at all in > future versions of R (assignment is sufficiently core functionality > that it may not be implemented via a function at all in some > circumstances). Locked bindings are locked for a reason: we as > developers can assume that their values are what we intend them to be. > If those values are changed then that assumption fails and some things > may stop working. > > If you explain what your needs are someone on the list can probably > help you find a more effective and less intrusive way of doing it. > > luke > > > On Fri, 23 Jan 2009, Yi Zhang wrote: > >> Hello all, >> >> I'm having a problem when overwriting the '<-' function and was told >> I'd better post it here for help. The reason why I need to overwrite >> it is complicated and not easy to tell in a few words; but this seems >> the only clean option other than hacking R's core source code. My code >> looks like: >> >> # in .onLoad of a package; or if you want to test, put it in a function >> env <- as.environment('package:base') >> unlockBinding('<-',env) >> assign('<-', newAssign, envir=env) >> .Internal(lockBinding(as.name('<-'), env)) >> #not using lockBinding directly because it calls '<-' >> >> It gave me this error: Error: evaluation nested too deeply: infinite >> recursion / options(expressions=)? >> >> Any suggestion is appreciated! >> >> -- >> Yi >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> > > -- > Luke Tierney > Chair, Statistics and Actuarial Science > Ralph E. Wareham Professor of Mathematical Sciences > University of Iowa Phone: 319-335-3386 > Department of Statistics and Fax: 319-335-3017 > Actuarial Science > 241 Schaeffer Hall email: l...@stat.uiowa.edu > Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu > -- Yi ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel