[R] Integer division
Martin Maechler
m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Mon Dec 19 15:41:51 CET 2022
>>>>> Göran Broström
>>>>> on Mon, 19 Dec 2022 14:22:00 +0100 writes:
> 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,
What??? I cannot believe you.
No time for checking now, but I bet that
8 / 3 gives 2 and not 3 in C and Fortran
(and hence gcc, etc)
> 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 using 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.
More information about the R-help
mailing list