<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN">
<HTML>
<HEAD>

<META content=text/html;charset=iso-8859-1 http-equiv=Content-Type><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<META content='"MSHTML 4.72.3110.7"' name=GENERATOR>
<STYLE></STYLE>

</HEAD>
<BODY bgColor=#d8d0c8>
<DIV><FONT color=#000000 size=2>There is a recursive function called 
&quot;subsets&quot; in the S-Programming book by V&amp;R, that lets you generate 
all unique combinations of n objects taken k at a time.&nbsp; Tim Hesterberg 
also has a non-recursive function called &quot;combinations&quot;, which may 
also be used.&nbsp; Note that the recursive function uses a lot more memory. You 
can use any of these functions to generate unique, exhaustive samples.&nbsp; 
</FONT></DIV>
<DIV><FONT color=#000000 size=2></FONT><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2></FONT><FONT color=#000000 size=2>Hope this 
helps,</FONT></DIV>
<DIV><FONT color=#000000 size=2></FONT><FONT size=2>Ravi.</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>Here is the non-recursive function (courtesy: Tim 
Hesterberg):</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV>combinations _ function(n, k){<BR>&nbsp; # Compute all n choose k 
combinations of size k from 1:n<BR>&nbsp; # Return matrix with k rows and 
choose(n,k) columns.<BR>&nbsp; # Avoids recursion.<BR>&nbsp; if(!is.numeric(n) 
|| length(n) != 1 || n%%1) stop(&quot;'n' must be an integer&quot;)<BR>&nbsp; 
if(!is.numeric(k) || length(k) != 1 || k%%1) stop(&quot;'k' must be an 
integer&quot;)<BR>&nbsp; if(k &gt; n || k &lt;= 0) return(numeric(0))<BR>&nbsp; 
rowMatrix _ function(n) structure(1:n, dim=c(1,n))<BR>&nbsp; colMatrix _ 
function(n) structure(1:n, dim=c(n,1))<BR>&nbsp; if(k == n) 
return(colMatrix(n))<BR>&nbsp; if(k == 1) return(rowMatrix(n))<BR>&nbsp; L _ 
vector(&quot;list&quot;, k)<BR>&nbsp; # L[[j]] will contain combinations(N, j) 
for N = 2:n<BR>&nbsp; L[[1]] _ rowMatrix(2)<BR>&nbsp; L[[2]] _ 
colMatrix(2)<BR>&nbsp; Diff _ n-k<BR>&nbsp; for(N in seq(3, n, 
by=1)){<BR>&nbsp;&nbsp;&nbsp; # loop over j in reverse order, to avoid 
overwriting<BR>&nbsp;&nbsp;&nbsp; for(j in seq(min(k, N-1), max(2, N-Diff), by= 
-1))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L[[j]] _ cbind(L[[j]], rbind(L[[j-1]], N, 
deparse.level=0))<BR>&nbsp;&nbsp;&nbsp; if(N &lt;= Diff+1) L[[1]] _ 
rowMatrix(N)<BR>&nbsp;&nbsp;&nbsp; else L[[N-(Diff+1)]] _ 
numeric(0)<BR>&nbsp;&nbsp;&nbsp; if(N &lt;= k) L[[N]] _ colMatrix(N)<BR>&nbsp; 
}<BR>&nbsp; L[[k]]<BR>}</DIV>
<DIV><BR>&nbsp;</DIV>
<BLOCKQUOTE 
style="BORDER-LEFT: #000000 solid 2px; MARGIN-LEFT: 5px; PADDING-LEFT: 5px">
    <DIV><FONT face=Arial size=2><B>-----Original Message-----</B><BR><B>From: 
    </B>Andrew Criswell &lt;<A 
    href="mailto:arc@arcriswell.com">arc@arcriswell.com</A>&gt;<BR><B>To: </B><A 
    href="mailto:r-help@stat.math.ethz.ch">r-help@stat.math.ethz.ch</A> &lt;<A 
    href="mailto:r-help@stat.math.ethz.ch">r-help@stat.math.ethz.ch</A>&gt;<BR><B>Date: 
    </B>Tuesday, November 20, 2001 12:52 AM<BR><B>Subject: </B>[R] Sampling from 
    a population<BR><BR></DIV></FONT>
    <DIV><FONT face=Arial size=2>Hi ALL:</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2>Suppose you have a population of N &lt;- 5 
    observations, x &lt;- c(43, 28, 7, 61, 39). From that you can draw a maximum 
    of 10 samples without replacement of size n &lt;- 3. (Command choose(N,n) 
    yields 10). For instance the samples I seek are</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; 43, 61, 7</FONT></DIV>
    <DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; 39, 7, 28&nbsp; 
    ...etc</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2>How can I get R to do that for me, to get an 
    exhaustive list of samples of size n drawn without replacement from a 
    population of size N?&nbsp; The command, sample(x, 3, replace=FALSE), works 
    well for one draw. Is there a package that will handle multiple 
    draws?</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2>Thanks and best wishes,</FONT></DIV>
    <DIV><FONT face=Arial size=2>ANDREW</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; 
</FONT></DIV></BLOCKQUOTE></BODY></HTML>