vector
On Mon, 1 Dec 2008, Hamid Hamid wrote:
Dear All, I am trying to build a program which will take repeated samples without replacement from a population of values. The interesting catch is that I would like the sample values to be removed from the population, after each sample is taken.
You mean ONLY 'after each sample is taken'? That is, you sample with replacement, then remove the sample from the population, sample again with replacement and then remove those, ... If that is not what you mean, ordinary sampling WOR will do. If the scheme I describe above is what you meant, read on. Sometimes it is efficient to vectorize in a way that yields an incomplete answer, then patch the result, then patch the patched result, ... Here is an example that implements drawing samples with replacement, but removing each sample before drawing the next (so a single sample could contain duplicates, but no pair of samples could contain the same element):
n <- c(3,3,4) # draw samples of size n[i] samp <- rep(seq(n),n) # index the sample trials <- sample(pop,sum(n),repl=TRUE) # fast but not always right index.first.like.me <- match(trials,trials) gotta.fix <- which( samp[ index.first.like.me ] < samp ) trials[ gotta.fix ] <- sample( setdiff(pop,trials), length( gotta.fix ), repl=TRUE ) index.first.like.me <- match(trials,trials) gotta.fix <- which( samp[ index.first.like.me ] < samp ) length(gotta.fix) # see if there are any cases to fix
[1] 0
Obviously, you would build the part after the 'trials <-' line into a
while(){} loop , and you can easily improve upon 'setdiff( pop, trials )'.
HTH,
Chuck
For example: pop<-c(1,5,14,7,9,12,18,19,65,54) sample(pop, 2) = lets say, (5,54) ## This is where I would like values (5, 54) to be removed from the population vector, giving a new "current" population vector: "new" pop = [1,14,7,9,12,18,19,65] and has length 8 instead of 10. In the cases when the size of pop and deriven sample of it is enough large using the following command is not helpful. newpop<-pop[-c(2,10)] One could simplify my question in this way: how we can exclude a sub vector values from a super vector value (i.e sub vecor values are subset of super vector values). Thanks in advance. Hamid [[alternative HTML version deleted]]
______________________________________________ R-help at 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.
Charles C. Berry (858) 534-2098
Dept of Family/Preventive Medicine
E mailto:cberry at tajo.ucsd.edu UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901