On 06 May 2014, at 18:20 , Hadley Wickham <h.wick...@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....@cbs.dk  Priv: pda...@gmail.com

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to