>>>>> Steve Taylor <steve.tay...@aut.ac.nz> >>>>> on Tue, 3 Feb 2015 03:11:47 +0000 writes:
> Nobody would write x=x or indeed x<-x; both are silly. If > I found myself writing f(x=x) I might smirk at the > coincidence, but it wouldn't bother me. I certainly > wouldn't confuse it with assigning x to itself. By the > way, here's another assignment operator we can use: > `:=` = `<-` # this is going in my .Rprofile > x := 1 I very much agree with you on that last point. A while ago, about or shortly before when R was created, say ca. 1991-1993, when S4 was "around the corner", and I was a beta tester for it, and '=' was going to be introduced into the S language, I had a fervent plea for considering ":=" as an alternative... ... but was never even replied to IIRC. The fact that R's parser allows ':=' is an interesting historic relict itself. Before R even got a version number, R did not have packages yet, there was "kind of a distinction" (don't ask me for details now) between "base R functions" and "other R objects" {If Ross Ihaka reads this, he will cringe I'm sure.. sorry, Ross!} and all those used := The last version that still used this extensively 0.13, is still available as R-0.13alpha.tar.gz (813570 bytes, dated Nov 7, 1996), and contains a file src/library/base/median (note, no 'R' subdirectory) which looks like this --------------------------------------------------------------------- median := function(x, na.rm = FALSE) { if(na.rm) x <- x[!is.na(x)] else if(any(is.na(x))) return(NA) n <- length(x) half <- (n + 1)/2 if(n %% 2 == 1) { sort(x, partial = half)[half] } else { sum(sort(x, partial = c(half, half + 1))[c(half, half + 1)])/2 } } --------------------------------------------------------------------- so yes, ":=" had its nice history, but as it was not accepted into S *instead* of '=', it also fell away for R ... Martin Maechler, ETH Zurich (and R Core team since "prehistory") > -----Original Message----- From: Jeff Newmiller > [mailto:jdnew...@dcn.davis.ca.us] Sent: Tuesday, 3 > February 2015 3:54p To: Steve Taylor; > r-h...@stat.math.ethz.ch Subject: Re: [R] the > less-than-minus gotcha > I did not start out liking <-, but I am quite attached to > it now, and even Rcpp feels weird to me now. This may seem > like yet another variation on a theme that you don't find > compelling, but I find that > f(x=x) > makes sense when scope is considered, but > x=x > on its own is silly. That is why I prefer to reserve = for > assigning parameters... I use it to clarify that I am > crossing scope boundaries, while <- never does. (<<- is a > dangerous animal, though... to be used only locally in > nested function definitions). > In my view, this is similar to preferring == from > C-derived syntaxes over the overloaded = from, say, > Basic. I am sure you can get by with the syntactic > overloading, but if you have the option of reducing > ambiguity, why not use it? > --------------------------------------------------------------------------- > Jeff Newmiller The ..... ..... Go Live... > DCN:<jdnew...@dcn.davis.ca.us> Basics: ##.#. ##.#. Live > Go... Live: OO#.. Dead: OO#.. Playing Research Engineer > (Solar/Batteries O.O#. #.O#. with /Software/Embedded > Controllers) .OO#. .OO#. rocks...1k > --------------------------------------------------------------------------- > Sent from my phone. Please excuse my brevity. > On February 2, 2015 5:57:05 PM PST, Steve Taylor > <steve.tay...@aut.ac.nz> wrote: >> Responding to several messages in this thread... >> >>> > All the more reason to use = instead of <- Definitely >>> not! >> >> Martin and Rolf are right, it's not a reason for that; I >> wrote that quickly without thinking it through. An "=" >> user might be more likely to fall for the gotcha, if not >> spacing their code nicely. So the lesson learned from >> the gotcha is that it's good to space your code nicely, >> as others have siad, not which assignment symbol to use. >> >> However, I continue to use "=" for assignment on a daily >> basis without any problems, as I have done for many >> years. I remain unconvinced by any and all of these >> arguments against it in favour of "<-". People telling >> me that I "should" use the arrow need better agruments >> than what I've seen so far. >> >> I find "<-" ugly and "->" useless/pointless, whereas "=" >> is simpler and also nicely familiar from my experience in >> other languages. It doesn't matter to me that "=" is not >> commutative because I don't need it to be. >> >>> Further it can be nicely marked up by a real "left >>> arrow" by e.g. the listings LaTeX 'listings' package... >> >> Now that's just silly, turning R code into graphical >> characters that are not part of the R language. >> >>> foo(x = y) and foo(x <- y) >> >> I'm well aware of this distinction and it never causes me >> any problems. The latter is an example of bad >> (obfuscated) coding, IMHO; it should be done in two lines >> for clarity as follows: >> >> x = y foo(x) >> >>> Using = has it's problems too. >> Same goes for apostrophes. >> >> Shall we discuss putting "else" at the start of line >> next? >> >> cheers, Steve >> >> ______________________________________________ >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and >> more, see 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. > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and > more, see 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. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.