[R] the less-than-minus gotcha

Jeff Newmiller jdnewmil at dcn.davis.CA.us
Tue Feb 3 03:53:39 CET 2015


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:<jdnewmil at 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.taylor at 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 at 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.



More information about the R-help mailing list