[R] understanding recursive functions

Wacek Kusnierczyk Waclaw.Marcin.Kusnierczyk at idi.ntnu.no
Fri Dec 19 01:16:01 CET 2008

Wacek Kusnierczyk wrote:
> it's a pity that <<- is not explained in ?`<<-` clearly enough:
> "  The operators '<<-' and '->>' cause a search to made through the
>      environment for an existing definition of the variable being
>      assigned.  If such a variable is found (and its binding is not
>      locked) then its value is redefined, otherwise assignment takes
>      place in the global environment.  Note that their semantics differ
>      from that in the S language, but are useful in conjunction with
>      the scoping rules of R.  See 'The R Language Definition' manual
>      for further details and examples."

the description is further imprecise as to what happens if such a
variable is found but is locked:

foo = function() {
   x = 0
   lockBinding("x", environment())
   (function() x <<- 1)()
   unlockBinding("x", environment())

# error

if analysed logically (IF (found AND not locked THEN assign) ELSE assign
globally), the description is wrong. 


More information about the R-help mailing list