Я справился с приведенным ниже кодом при написании функции для выборки из таблицы сопряженности - пропорционально частотам в ячейках.
Используется 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)!
Мой мозг перестал работать, я знаю, что это должно быть небольшая настройка, чтобы вернуть его в нужное русло!?