>> (B) you cannot (easily) predict whether or not x will be modified >> destructively > > that's fine, thanks, but i must be terribly stupid as i do not see how > this explains the examples above. where is the x used by something else > in the first example, so that 'names<-'(x, 'foo') does *not* modify x > destructively, while it does in the other cases? > > i just can't see how your explanation fits the examples -- it probably > does, but i beg you show it explicitly.
I think the following shows what Peter was referring to: In this case, there is only one pointer to the value of x: x <- c(1,2) > "names<-"(x,"foo") foo <NA> 1 2 > x foo <NA> 1 2 In this case, there are two: > x <- c(1,2) > y <- x > "names<-"(x,"foo") foo <NA> 1 2 > x [1] 1 2 > y [1] 1 2 It seems as though `names<-` and the like cannot be treated as R functions (which do not modify their arguments) but as special internal routines which do sometimes modify their arguments. -s ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel