既然你問什麼在這裏可以導致錯誤是:當hist.default
函數計算直方圖的中點創建
錯誤。這個矢量mids <- 0.5 * (breaks[-1L] + breaks[-nB])
計算每個休息點之間的中點。這個問題的產生是因爲符爲整數生成:
如果參數breaks
是numeric
和length == 1
然後hist.default
功能(這是由hist.POSIXt
調用)創建一個基於的x
範圍和中斷的數量的breaks
的矢量。這是通過使用pretty
命令完成的。至於原因,我還沒有研究過近,如果breaks
足夠小,pretty(range(x),n=breaks, min.n = 1)
只返回每個值例如爲:一
pretty(range(x), n = 35, min.n = 1)
#[1] 1392121179 1392121180 1392121181 1392121182 1392121183 1392121184
#[7] 1392121185 1392121186 1392121187 1392121188 1392121189 1392121190
#[13] 1392121191 1392121192 1392121193 1392121194 1392121195 1392121196
#[19] 1392121197 1392121198 1392121199 1392121200 1392121201 1392121202
#[25] 1392121203 1392121204
然後輸出爲integer
類型。然而,如果中斷的數量更大,並且一些的輸出被複制:
pretty(range(x), n = 36, min.n = 1)
# [1] 1392121179 1392121180 1392121180 1392121181 1392121181 1392121182
# [7] 1392121182 1392121183 1392121183 1392121184 1392121184 1392121185
#[13] 1392121185 1392121186 1392121186 1392121187 1392121187 1392121188
#[19] 1392121188 1392121189 1392121189 1392121190 1392121190 1392121191
#[25] 1392121191 1392121192 1392121192 1392121193 1392121193 1392121194
#[31] 1392121194 1392121195 1392121195 1392121196 1392121196 1392121197
#[37] 1392121197 1392121198 1392121198 1392121199 1392121199 1392121200
#[43] 1392121200 1392121201 1392121201 1392121202 1392121202 1392121203
#[49] 1392121203 1392121204 1392121204
則輸出是numeric
。
由於R使用32位整數類型,並且POSIXt
整數很大,因此添加兩個整數POSIXt
會導致溢出,R無法處理並返回NA
。當pretty
返回數字時,這不是問題。
參見:What is integer overflow in R and how can it happen?
在實踐中,這一切意味着,如果你打印出hist
結構中返回,所有mids
值將是NA
,但我不認爲它實際上影響的繪圖直方圖。因此這只是一個警告。
編輯: pretty
內部使用seq.int
和你一樣,我沒有得到上面的數據的警告,但我可以用更少的休息複製它。我猜這個問題與休息時間太短有關,問題中的數據集不是完整的。 – Eumenedies