[R] questions on some operators in R
Horace Tso
Horace.Tso at pgn.com
Fri Jun 18 20:15:56 CEST 2010
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-bounces at r-project.org [mailto:r-help-bounces at 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.Snow at 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.snow at imail.org
> 801.408.8111
>
>
> > -----Original Message-----
> > From: r-help-bounces at r-project.org [mailto:r-help-bounces at 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 at 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 at 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.
More information about the R-help
mailing list