2017-05-01 40 views
1

我想使用rmultinom函數在R分配大量的人口值,我有問題與整數溢出。rmultinom與大整數

例如,下面給我這個錯誤:

rmultinom(1, 7000000000, prob = c(0.4,0.6)) 

Error in rmultinom(1, 7000000000, prob = c(0.4, 0.6)) : 
    invalid second argument 'size' 
In addition: Warning message: 
In rmultinom(1, 7000000000, prob = c(0.4, 0.6)) : 
    NAs introduced by coercion to integer range 

我知道這是因爲我用比.Machine$integer.max= 2147483647的整數,但沒有人知道一個變通辦法沒有計數丟失精度?

+1

有了這樣龐大的人口規模我認爲,任何隨機值要結束了非常,非常接近你在'帶來的「真正的」比例prob'。你確定生成這些隨機樣本是一種有用的追求嗎? – Marius

回答

2

那麼如果你可以分解它,那麼它會工作。我們可以做到這一點的,比如說塊,100個測量

chunksize <- 1000000 
chunks <- 7000000000/chunksize 

rowSums(rmultinom(chunks, chunksize, prob=c(.4, .6)))