[Rd] Historical NA question

peter dalgaard pdalgd at gmail.com
Tue May 6 19:01:36 CEST 2014


On 06 May 2014, at 18:20 , Hadley Wickham <h.wickham at gmail.com> wrote:

>>> BTW, that %in% has precedence over arithmetic operations is surprising,
>>> error-prone, and doesn't cover any reasonable use case (who needs to
>>> multiply the logical vector returned by %in% by some value?) but that's
>>> another story:
>> 
>> The point here is that the %foo% operators all have the _same_ precedence. In principle, they can be user-coded, and there is no way to express what precedence is desirable. It may turn out slightly weird for %in%, but think of what would happen if %*% had lower precedence than addition.
> 
> This is getting way off topic, but I find the precedence of ! to be
> more surprising:
> 
>> !F + !F
> [1] FALSE
> 
> i.e. that's interpreted as !(F + !F) not (!F) + (!F).

Yes, UNOT has lower precedence than arithmetic and comparison ops in gram.y. So 

> !2<3
[1] FALSE
> !2+2==4
[1] FALSE

I suspect that that is as old as original sin (i.e., inherited from S). Anyone have the Blue Book to hand to verify? It's easy enough to change, but the sky would likely fall down on our heads if we tried...

Also surprising:

> quote(!2+!2)
!2 + (!2)

where it is somewhat perplexing what the parentheses are supposed to be good for.  


> 
> Hadley
> 
> -- 
> http://had.co.nz/

-- 
Peter Dalgaard, Professor
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-devel mailing list