[R] questions on some operators in R

Horace Tso Horace.Tso at pgn.com
Sat Jun 19 00:39:16 CEST 2010


Greg, your second example, recording the run time of an operation or a function, would make the use of '=' problematic. But I wonder if that's specific to system.time. 

H  

-----Original Message-----
From: Greg Snow [mailto:Greg.Snow at imail.org] 
Sent: Friday, June 18, 2010 3:33 PM
To: Horace Tso
Subject: RE: [R] questions on some operators in R

And the 2nd example?

-- 
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 3:09 PM
> To: Greg Snow
> Subject: RE: [R] questions on some operators in R
> 
> Then, break it into two lines,
> 
> x = rnorm(100)
> mean(x)
> 
> H
> 
> -----Original Message-----
> From: Greg Snow [mailto:Greg.Snow at imail.org]
> Sent: Friday, June 18, 2010 1:16 PM
> To: Horace Tso; li li
> Cc: r-help
> Subject: RE: [R] questions on some operators in R
> 
> 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