When programming within the R environment I used rep("[35,40)",1020). This should give me a list with 1020 times "[35,40)". However, the result contains only 1019 of these elements.
The programming was first done within a replicated for two vectors, but even when I split it up it doesn't work.
What I tried is using differen versions of R (R 2.11.1, R 2.9.0, R 2.10.0, R 2.7.2) but in none of them it works properly.
Has anyone an idea if there is a version of R which doesn't have this bug? Or how I could solve this problem?
So the code for this:
> agecats
[1] "(-0.001,5]" "(5,10]" "(10,15]" "(15,20]" "(20,25]"
[6] "(25,30]" "(30,35]" "(35,40]" "(40,45]" "(45,50]"
[11] "(50,55]" "(55,60]" "(60,65]" "(65,70]" "(70,75]"
[16] "(75,80]"
> weightage<-c(0.9,0.9,2.7,3.1,8.9,10.05,10.05,10.2,10.2,9.3,9.3,8.7,7.9,3.15,3.15,1.5)
> weightage
[1] 0.90 0.90 2.70 3.10 8.90 10.05 10.05 10.20 10.20 9.30 9.30 8.70
[13] 7.90 3.15 3.15 1.50
> weightage100<-weightage*100
> weightage100
[1] 90 90 270 310 890 1005 1005 1020 1020 930 930 870 790 315 315
[16] 150
> tosamplefrom<-rep(agecats,weigh开发者_运维知识库tage100)
> table(tosamplefrom)
tosamplefrom
(-0.001,5] (10,15] (15,20] (20,25] (25,30] (30,35] (35,40]
90 270 310 890 1005 1005 1019
(40,45] (45,50] (5,10] (50,55] (55,60] (60,65] (65,70]
1019 930 90 930 869 790 315
(70,75] (75,80]
315 150
And here I should have the 8 and 9 1020 times and it just gives 1019 times.
Kim
(10.20 * 100) == 1020
FALSE
This is your problem. 10.2 can't be represented exactly and everything is going to hell because you're multiplying a floating point number and assuming it's an integer. It appears that R must be taking the floor of the number or just using as.integer for the conversion:
floor(10.2*100)
1019
as.integer(10.2*100)
1019
Rounding will work whether the floating point value is slightly above or slight below. The following change does fix the problem.
weightage100 <- round (weightage*100)
Read the R Inferno (floating point problems like this are not exclusive to R, for example, I just replicated it in python)
精彩评论