[R] Odd results with %% and conserving memory
justinmmcgrath at hotmail.com
Fri Mar 26 22:05:36 CET 2010
Can anyone explain this?
I have a matrix with double components. It's taking up a lot of memory, so I
want to multiply then turn it to integers. I'm pretty certain that there are
only 2 decimal places, but I wanted to check by using modulo. E.g.
mat = matrix(11:50/100, ncol=4,nrow=10) #Matrix with values out to the
any((mat * 100)%%1!=0)
But oddly enough it doesn't work. Even in this simple example the result I
get is this:
[,1] [,2] [,3] [,4]
[1,] 0.000000e+00 0.000000e+00 0 0
[2,] 0.000000e+00 0.000000e+00 0 0
[3,] 0.000000e+00 0.000000e+00 0 0
[4,] 1.776357e-15 0.000000e+00 0 0
[5,] 0.000000e+00 0.000000e+00 0 0
[6,] 0.000000e+00 0.000000e+00 0 0
[7,] 0.000000e+00 0.000000e+00 0 0
[8,] 0.000000e+00 3.552714e-15 0 0
[9,] 0.000000e+00 1.000000e+00 0 0
[10,] 0.000000e+00 0.000000e+00 0 0
Two non-zero values are just very small, but one is value is actually 1. Can
someone explain this?
If you pick just a single number you can see some odd results too.
Shouldn't the result be 410 each time?
I think in this case it should have returned all 0s, and I could have done
newmat = as.integer(mat*100)
dim(newmat) = dim(mat)
Is there a better way to convert my double matrix to an integer matrix
without losing precision? Or are there better ways to conserve memory? I'm
at the limit.
View this message in context: http://n4.nabble.com/Odd-results-with-and-conserving-memory-tp1692845p1692845.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help