I have a long vector x with five-digit codes where the first digit of each is of special interest, so I extracted them through

> y <- x %/% 10000

but to my surprise y contained the value -1 in some places. It turned out that x contains -1 as a symbol for 'missing value' so in effect I found that

> -1 %/% 10000 == -1

Had to check the help page for "%/%", and the first relevant comment I found was:

"Users are sometimes surprised by the value returned".

No surprise there. Further down:

‘%%’ indicates ‘x mod y’ (“x modulo y”) and ‘%/%’ indicates
     integer division.  It is guaranteed that

     ‘ x == (x %% y) + y * (x %/% y) ’ (up to rounding error)

I did expect (a %/% b) to return round(a / b), like gfortran and gcc, but instead I get floor(a / b) in R. What is the reason for these different definitions? And shouldn't R's definition be documented?

Thanks, Göran

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to