From luke at stat.uiowa.edu  Fri Jan 23 22:25:49 2009
From: luke at stat.uiowa.edu (luke at stat.uiowa.edu)
Date: Fri, 23 Jan 2009 15:25:49 -0600 (CST)
Subject: [Rd] overwriting '<-' and infinite recursions
In-Reply-To: <a0428ec90901231241u561a5848re009b252bf7d1808@mail.gmail.com>
References: <a0428ec90901231241u561a5848re009b252bf7d1808@mail.gmail.com>
Message-ID: <alpine.DEB.1.00.0901231517430.6710@luke-inspiron>

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 at 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:      luke at stat.uiowa.edu
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu



[Rd] overwriting '<-' and infinite recursions
luke at stat.uiowa.edu