[R] questions on some operators in R
Joshua Wiley
jwiley.psych at gmail.com
Fri Jun 18 20:37:16 CEST 2010
On Fri, Jun 18, 2010 at 11:15 AM, Horace Tso <Horace.Tso at 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-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.
>
> ______________________________________________
> 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.
>
--
Joshua Wiley
Ph.D. Student
Health Psychology
University of California, Los Angeles
More information about the R-help
mailing list