On Fri, Jun 18, 2010 at 11:15 AM, Horace Tso <horace....@pgn.com> wrote: > 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
Yes, but with spaces this does not happen: > x <- -5:10 > x[which(x < -2)] [1] -5 -4 -3 > 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. > -- Joshua Wiley Ph.D. Student Health Psychology University of California, Los Angeles ______________________________________________ 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.