[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