[R] questions on some operators in R

Greg Snow Greg.Snow at imail.org
Fri Jun 18 22:16:22 CEST 2010


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.snow at imail.org
801.408.8111


> -----Original Message-----
> From: Horace Tso [mailto:Horace.Tso at 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-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