我已經管理了下面的代碼,寫了一個函數從應急表中抽樣 - 與細胞中的頻率成正比。從應急表中抽樣
它使用expand.grid
,然後table
返回到原始大小表。只要樣本大小足夠大,以至於某些類別沒有完全丟失,哪種方法可以正常工作。否則,table
命令將返回一個尺寸小於原始尺寸的表格。
FunSample<- function(Full, n) {
Frame <- expand.grid(lapply(dim(Full), seq))
table(Frame[sample(1:nrow(Frame), n, prob = Full, replace = TRUE), ])
}
Full<-array(c(1,2,3,4), dim=c(2,2,2))
FunSample(Full, 100) # OK
FunSample(Full, 1) # not OK, I want it to still have dim=c(2,2,2)!
我的大腦已經停止工作,我知道它必須做一些小調整才能讓它回到正軌!?
謝謝尼爾,這是一個美麗而優雅的解決方案,我已經改變了你的答案! – maja 2015-05-21 11:21:28