Your example could also be used as an argument against allowing '=' as a shortcut for <- after all if you are used to using <- (rather than =) then you will see the problem with x<-2 right off. But if we eliminate <- and only use =, then how do you do:
> mean( x <- rnorm(100) ) Or > system.time( output <- longrunningfunction(args) ) Is > mean( { x=rnorm(100) } ) Really and improvement? -- Gregory (Greg) L. Snow Ph.D. Statistical Data Center Intermountain Healthcare greg.s...@imail.org 801.408.8111 > -----Original Message----- > From: Horace Tso [mailto:horace....@pgn.com] > Sent: Friday, June 18, 2010 12:16 PM > To: li li; Greg Snow > Cc: r-help > Subject: RE: [R] questions on some operators in R > > Li li, > > I know many S-language old timers would tell you to use <- over = for > assignment. Speaking from my own painful experience of debugging S/R > codes, I much much much prefer '='. In fact, I'd like to see the R > language get ride of '<-' as the assignment operator. > > Here is why. > > > x = -5:10 > > x > [1] -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 > > Now I want to find elements of x which are smaller than negative 2, or > -2. So naturally I'd do, > > > which(x<-2) > Error in which(x <- 2) : argument to 'which' is not logical > > Oops, what happened? If you look up help pages for 'which', you'd find > no clue. > > What occurred in the parenthesis is that you've overidden your vector x > with a single value of 2, thanks to the assignment operator '<-'. > > This' a big problem not just because you might end up spending hours > finding out what's wrong with such innocent expression. The worst part > is, you'd have lost your vector x forever. Just image if x is 1200 by > 1200 matrix. > > HTH. > > H > > > > > > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r- > project.org] On Behalf Of li li > Sent: Friday, June 18, 2010 10:01 AM > To: Greg Snow > Cc: r-help > Subject: Re: [R] questions on some operators in R > > Thank you all for your kind reply! > Hannah > > 2010/6/18 Greg Snow <greg.s...@imail.org> > > > Just to expand a little on David's reply. > > > > The & vs. && and | vs. || issue is really about where and how you > plan to > > use things. & and | work on vectors and are intended to be used to > combine > > logical vectors into a new logical vector (that can be used for > various > > things). && and || are used for program control, mainly in the > condition of > > if or while statements. The program flow versions have the benefit > of > > evaluating the left condition, then only evaluating the right > condition if > > needed (this can save some warning messages and time). Compare the > > following commands: > > > > > x <- rnorm(100) > > > any(x < 0) | any(log(x) < 0) > > > any(x < 0) || any(log(x) < 0) > > > > > > The '<-' operator is for assignment, the '=' is used to match formal > > arguments in functions to their values. In some cases where it is > > unambiguous the '=' can be used in place of '<-' (see the help page). > But > > you need to understand the difference since there are cases where > they will > > not do the same thing. > > > > > mean( x <- rnorm(100) ) > > And > > > mean( x = rnorm(100) ) > > > > Do not do the same thing (well part is the same, but there is a > subtle but > > significant difference). > > > > > mean( z <- rnorm(100) ) > > And > > > mean( z = rnorm(100) ) > > > > Are even more different. > > > > > > > > -- > > Gregory (Greg) L. Snow Ph.D. > > Statistical Data Center > > Intermountain Healthcare > > greg.s...@imail.org > > 801.408.8111 > > > > > > > -----Original Message----- > > > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r- > > > project.org] On Behalf Of li li > > > Sent: Wednesday, June 16, 2010 4:33 PM > > > To: r-help > > > Subject: [R] questions on some operators in R > > > > > > Hi all, > > > I have two questions. Can some one give some help? > > > > > > The first question is regarding the pair of operators "&" and > "&&". > > > What > > > is the > > > difference between the two? > > > > > > The second question is regarding "<-" and "=". Usually we use > > > "<-" as the assignment operator. I saw some people use "=". Is > there > > > any difference between the two. > > > > > > Thank you!! > > > Hannah > > > > > > [[alternative HTML version deleted]] > > > > > > ______________________________________________ > > > 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- > <http://www.r-project.org/posting-> > > > guide.html > > > and provide commented, minimal, self-contained, reproducible code. > > > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. ______________________________________________ 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.