"Richard A. O'Keefe" <[EMAIL PROTECTED]> writes: > Thomas Lumley <[EMAIL PROTECTED]> wrote: > I would have said that the behavior of > (if (cond) names else dim)(x) <- 10 > is undefined in the S language, along with things like the order of > evaluation of the apply functions. > > The thing is, it would make perfect sense for > (if (cond) f else g)(x) <- e > to have the effect of > (if (cond) f(x) <- e else g(x) <- e) > > In fact, I've used two programming languages where the analogue of > this _did_ work, and a third where it didn't but using only published > interfaces could very easily be made to work.
Yes, and it could be made to work in R too with a simple semantic change: The fundamental problem is that replacement functions are bound to symbols in R, not to the actual functions. That is the reason why we have > x <- c(a=1) > x a 1 > (names)(x) [1] "a" > (names)(x) <- 1 Error: couldn't find function "PT<-" (that's with the bug unfixed). The thing is that (names) is an unnamed function so there's no way to know that "names<-" is the replacment function. If names<- had been an attribute of names, then there would be no problem. Usual story: Code that needs to go via the textual representation of something is often subtly wrong. Of course noone really need to do this, do they? So the incentive to change is rather small. -- O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help