samplist_function(popn,sampsize){ # Samplist generates all possible SRS's of size sampsize # from the population in vector popn. # Auxiliary function: comblist # Returns: matrix in which each row is one of the SRS's popvals_ 1:length(popn) temp_comblist(popvals,sampsize) matrix(popn[t(temp)],nrow=nrow(temp),byrow=T) } comblist_function(popvals, sampsize) { # Comblist generates all combinations of the integers 1 through n, # which are assumed to be the argument in popvals. popsize <- length(popvals) if(sampsize > popsize) stop("sample size cannot exceed population size") nvals <- popsize - sampsize + 1 nrows <- prod((popsize - sampsize + 1):popsize)/prod(1:sampsize) ncols <- sampsize yy <- matrix(nrow = nrows, ncol = ncols) if(sampsize == 1) { yy <- popvals } else { nvals <- popsize - sampsize + 1 nrows <- prod(nvals:popsize)/prod(1:sampsize) ncols <- sampsize yy <- matrix(nrow = nrows, ncol = ncols) rep1 <- rep(1, nvals) if(nvals > 1) { for(i in 2:nvals) rep1[i] <- (rep1[i - 1] * (sampsize + i - 2))/(i - 1) } rep1 <- rev(rep1) yy[, 1] <- rep(popvals[1:nvals], rep1) for(i in 1:nvals) { yy[yy[, 1] == popvals[i], 2:ncols] <- Recall( popvals[(i + 1):popsize], sampsize - 1) } } yy }