2015-06-15 67 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"