Rolf Turner <r.turner <at> auckland.ac.nz> writes: > > > On 2/07/2009, at 12: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. > > But I doubt that R Core will move > to build a "[<<-" operator, even should it prove to be possible.
Thanks for your reply. Upon more careful reading of the manuals, I think the behavior I observed _is_ documented. The "<<-" form of assignment looks for the target variable in the enclosing environment. I had mistakenly thought that it looks for the target variable in the current or enclosing environment. This is made clear in http://cran.r-project.org/doc/manuals/R-lang.html#Subset-assignment: == snip == e<-c(a=1,b=2) i<-1 local({ e <- c(A=10,B=11) i <-2 e[i] <<- e[i]+1 }) uses the local value of i on both the LHS and RHS, and the local value of e on the RHS of the superassignment statement. It sets e in the outer environment to a b 1 12 == snip == As whether using <<- is good practice, I think there are valid and natural uses. There are some examples in the R manuals, for example, http://cran.r-project.org/doc/manuals/R-intro.html#Scope Best, Hsiu-Khuern. ______________________________________________ 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.