# Re: [R] if syntax error :(

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Wed 14 Jun 2006 - 06:29:09 EST

On 6/13/06, Rolf Turner <rolf@erdos.math.unb.ca> wrote:
> H. Paul Benton wrote:
>
> > Umm sorry to bother everyone again but I'm having trouble with my if
> > statement. I come from a perl background so that's probably my problem! :)
> > So here is my code:
> >
> > if (any(lgAB>4) | any(lgAB<-4)){
> > freq_AB<-hist(lgAB, type="o", plot=F)
> > else
> > freq_AB<-hist(lgAB, breaks=br,type ="o", plot=F)
> > }
> >
> > And I get
> > > source("E:/R/GMDA-1.1.R")
> > Error in parse(file, n = -1, NULL, "?") : syntax error at
> > 11: freq_AB<-hist(lgAB, type="o", plot=F)
> > 12: else
> > >
>
> No-one yet has pointed out the following problem, which, while not be
> a syntax error as such, will cause you headaches:
>
> if (any(lgAB>4) | any(lgAB<-4)){
> ^^^^^^^
>
> This assigns the value 4 to lgAB (which is presumably NOT what
> you want to do). You want ``any(lgAB < -4)''.
>
> General rule: Put in spaces around operators --- it makes the
> code (much) more readable and avoids unintended consequences.
>
> Another infelicity in your code: ``plot=F''. Use ``plot=FALSE''.
> (Note that the symbols ``F'' and ``T'' are assignable, *unlike*
> ``TRUE'' and ``FALSE''.)
>

In fact if we are going to improve the code we could write it more compactly and in a way which shows more clearly that the if is only involved in setting breaks like this:

freq_AB <- hist(lgAB, type = "o", plot = FALSE,   breaks = if (any(abs(lgAB) > 4)) "Sturges" else br)

R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Jun 14 06:32:25 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Wed 14 Jun 2006 - 08:12:07 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.