On Tue, 6 Apr 2004 13:36:32 +0000, Robin Hankin <[EMAIL PROTECTED]>
wrote :

> the following caught me off-guard:
>
>
>R> a <- matrix(1:9,3,3)
>R> a[a%%2==1] %+=% 1000*(1:5)
>[1] 1001 2006 3015 4028 5045
>R> a
>      [,1] [,2] [,3]
>[1,] 1001    4 1007
>[2,]    2 1005    8
>[3,] 1003    6 1009
>R>
>
>Why the difference when I remove the brackets?

Looks to me like an operator precedence issue.  Your line is
equivalent to 

(a[a%%2==1] %+=% 1000)*(1:5)

This is described in the Language Manual, in Parser | Expressions |
Infix and prefix operators (section 10.4.2 in the PDF version).  The
user defined %xyz% operators have precedence just above * and /.

>And how is the vector that is printed in the unbracketed version determined?
>(why is this printed anyway? doing "a[a%%2==1] %+=% 1000" doesnt
>print anything).
>
>Is there a better way to code up %+=%  ?

Not really.  You can't control operator precedence in R. 

Duncan Murdoch

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to