2015-06-15 37 views
2

我想用Rs hist函数来获取bin计数。因为不知道我使用的最低或最高值--Inf和Inf作为第一次和最后一次突破。但不是计算 - 如果是第一次休息,而Inf R的最后一次休息则将所有值都放入第一个箱中。Inf中hist拆分的行为,R

> hist(1:100, breaks=c(0, 50, 100), plot=F)$counts 
[1] 50 50 
> hist(1:100, breaks=c(-Inf, 50, 100), plot=F)$counts 
[1] 100 0 
> hist(1:100, breaks=c(0, 50, Inf), plot=F)$counts 
[1] 100 0 
> hist(1:100, breaks=c(-Inf, 50, Inf), plot=F)$counts 
[1] 100 0 

我希望所有四行都给出相同的输出,但他们没有。 这是预期的行为?有没有简单的解决方法来解决这个问题?

编辑:我结束了使用表,而不是削减:

table(cut(1:100, breaks=c(-Inf, 50, Inf))) 
+0

您使用的是哪个版本的R?我无法重现你的结果:在所有情况下,我都得到50 50。 –

+0

我正在使用R版本3.1.2(2014-10-31)也许我应该更新。 – snaut

回答

1

它会导致问题的hist因为块的宽度变得无穷大,默认情况下hist考虑了其计算的模块的面积:

与非等间隔休息默认是给区域的一个,其中 矩形的面积是落在单元中的数据点 的分数的曲线图。

您最好使用休息参数的单值版本:要使用的休息数。默认情况下,它会为您的数据选择明智的中断:

str(hist(1:100, breaks=3, plot=F)) 
List of 6 
$ breaks : num [1:3] 0 50 100 
$ counts : int [1:2] 50 50 
$ density : num [1:2] 0.01 0.01 
$ mids : num [1:2] 25 75 
$ xname : chr "1:100" 
$ equidist: logi TRUE 
- attr(*, "class")= chr "histogram"