私は以下のコードまで、コンティンジェンシーテーブルからサンプルする関数を書いています。これはセルの周波数に比例しています。コンティンジェンシーテーブルからのサンプリング
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)!
私の脳は機能しなくなった、私はそれが軌道に戻ってそれを得るために小さな微調整でなければならないことを知っている!
ありがとうございましたNeal、それは美しくエレガントなソリューションです、私はあなたの答えを変更しました! – maja