On Wed, 3 Sep 2003, Richard A. O'Keefe wrote: > The file src/library/base/R/print.R > contains this line: > > x0 <- xm[okP]==0 != (as.numeric(Cf[okP])==0) > > I didn't know R allowed that, and I wonder if it is deliberate?
Well, I'm not surprised that it's syntactically valid, but I wouldn't know off-hand which way it evaluated. > In mathematics, you would expect x = y not= z to mean > (x = y) and (y not= z).; > In R, it is parsed as (x == y) != z. I think it's clear that it will parse as either (x==y) != z or x == (y!=z) but not which. > While I have to admit that the spacing around == and != in print.R's > example does actually convey the actual association, in a vaguely > Principia Mathematica-ish way, I have to wonder: > > Is R really seriously intended to swallow x == y != z without complaint? > > If the line > > %left GT GE LT LE EQ NE > > in src/main/gram.y were changed to > > %nonassoc GT GE LT LE EQ NE > > then the line > > x0 <- xm[okP]==0 != (as.numeric(Cf[okP])==0) > > in src/library/base/R/print.R would have to be changed to > > x0 <- (xm[okP]==0) != (as.numeric(Cf[okP])==0) > > and all things considered, surely that would be an improvement? This is presumably S compatible (<checks: yes it is>) and so while changing print.R would be an improvement, changing the grammar probably wouldn't. -thomas ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help