セル内の頻度に比例して、分割表からサンプリングする関数を作成する際に、以下のコードまで管理しました。
その後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)!
私の脳は機能を停止しました。元に戻すには少し微調整する必要があることはわかっています!?