[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