我正在尝试处理 R 中的百分比,但我遇到了奇怪的问题。当我将向量的值转换为向量的百分比时sum
,经常会发生它们加起来不等于一的情况。
最小的例子:
data <- rnorm(1000)*100
max <- 50
unlist(lapply(0:(1000/max-1),
function(i)
sum(
data[(i*max+1):(i*(max+1))]
/
sum(data[(i*max+1):(i*(max+1))])
)
))-1
它应该给出零向量,但是我得到了这个:
[1] 0.000000e+00 0.000000e+00 -1.110223e-16 -1.110223e-16 0.000000e+00 -1.110223e-16 0.000000e+00 0.000000e+00 0.000000e+00
[10] 0.000000e+00 0.000000e+00 2.220446e-16 0.000000e+00 -4.440892e-16 0.000000e+00 0.000000e+00 0.000000e+00 4.440892e-16
[19] -1.110223e-16 0.000000e+00
有什么补救办法吗?