[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())
}

foo()
# error

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

vQ



More information about the R-help mailing list