[R] round() - strange results
Duncan Murdoch
murdoch at stats.uwo.ca
Tue Feb 22 21:51:37 CET 2005
On Tue, 22 Feb 2005 10:10:58 -0800, "Dongseok Choi" <choid at ohsu.edu>
wrote :
>Hello,
>
> I found that round() does not behave as I expected.
> Have you had similar experience as following?
>
>> x<-seq(0.5,10.5,by=1)
>> x
> [1] 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 10.5
>> round(x)
> [1] 0 2 2 4 4 6 6 8 8 10 10
>> cbind(x,round(x))
> x
> [1,] 0.5 0
> [2,] 1.5 2
> [3,] 2.5 2
> [4,] 3.5 4
> [5,] 4.5 4
> [6,] 5.5 6
> [7,] 6.5 6
> [8,] 7.5 8
> [9,] 8.5 8
>[10,] 9.5 10
>[11,] 10.5 10
>
>
> Is this a well-known bug?
As others have said, it's not a bug at all. If you would like to
round up instead, what you should do is use a function like this:
> roundup <- function(x) trunc(x+0.5)
> x <- -5:5 + 0.5
> x
[1] -4.5 -3.5 -2.5 -1.5 -0.5 0.5 1.5 2.5 3.5 4.5 5.5
> round(x)
[1] -4 -4 -2 -2 0 0 2 2 4 4 6
> roundup(x)
[1] -4 -3 -2 -1 0 1 2 3 4 5 6
If this doesn't handle negatives the way you want, play around a bit
with abs().
Duncan Murdoch
More information about the R-help
mailing list