Greetings,

I am attempting to do something with R that I think should be efficiently 
do-able, but I haven't yet found success.

I have a vector of probability weights (for 17 categories), let's call it 
things (it could look like the one below, for instance).

> things
0.026 0 0.233 0 0.131 0 0.415 0 0 0 0 0 0.192 0 0.067 0 0

I'd like a sample of size size.things (say, 47) of the 17 categories (with 
replacement). And I'd like to produce a vector of length 17 which enumerates 
the number of times each category has been selected. This is fairly 
straightforward to do; for instance:

> things2<-table(factor(sample(1:17,size.things[1],replace=TRUE,prob=things),levels=1:17))
 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17
 1  0  9  0  4  0 18  0  0  0  0  0  5  0  4  0  0

What would I need to do if I had a matrix things (50000 x 17) of probability 
weight vectors and a vector of sample sizes size.things (of length 50000), and 
I wanted to simultaneously sample size.things[1] of the 17 categories with 
probability weight vector things[1,], size.things[2] of the 17 categories with 
probability weight vector things[2,], etc. A loop will do the trick, but it 
takes a while and it seems to me that I could more efficiently use tapply 
somehow. Or something that behaves like rowSums. I'm not familiar enough with R 
to see an easy way out. Perhaps there isn't? Does anybody have an idea?

Regards,

Patrick








        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to