On 01/07/2009 8:20 PM, Hsiu-Khuern Tang wrote:
Is this expected behavior?

z <- 1:5
z[1] <<- 0
Error in z[1] <<- 0 : object "z" not found

The documentation seems to suggest that z will be found in the global
environment and modified accordingly.

z <<- 0 works as documented, it's the indexing that fails. (I tried other replacement functions and they also failed.) I think this case is also behaving as documented, but the docs are in the R Language Definition manual. To evaluate

z[1] <<- 0

the following sequence is what is supposed to happen:

- Look up z in the parent environment of the evaluation frame, and assign to a temporary variable. (This is what fails; z is in the evaluation frame, not its parent.)
  - Set the first element of the temporary.
  - Use <<- to assign the temporary to z.

This might be surprising, but I think it makes sense. Using <<- when evaluating in the global environment is almost certainly an error; shouldn't R signal it as such?

Duncan Murdoch

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to