<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 5.50.4134.600" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#d8d0c8>
<DIV>
<DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<BLOCKQUOTE dir=ltr 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <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><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV><FONT face="Courier New" size=2># First solution</FONT></DIV>
  <DIV>&nbsp;</DIV>
  <DIV><FONT face="Courier New" size=2>combix&lt;-function(x,r) 
  {<BR>n&lt;-length(x)<BR>total&lt;-choose(n,r)<BR>a&lt;-matrix(0,total,r)<BR>ind&lt;-c(1:r)<BR>for 
  (i in 1:total){<BR>&nbsp;&nbsp; for (j in 
  1:r){a[i,j]&lt;-x[ind[j]]}<BR>&nbsp;&nbsp; for (j in 
  r:1){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  miro&lt;-j<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  ind[j]&lt;-ind[j]+1<BR>&nbsp;&nbsp; if (ind[j]&lt;n-r+j+1) 
  break()<BR>}<BR>&nbsp;&nbsp; while(miro&lt;r) {<BR>&nbsp;&nbsp; 
  ind[miro+1]&lt;-ind[miro]+1<BR>&nbsp;&nbsp;&nbsp; 
  miro&lt;-miro+1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  }<BR>}<BR>return(a)<BR>}</FONT></DIV>
  <DIV>&nbsp;</DIV>
  <DIV><FONT face="Courier New" size=2>print(combix(x=1:5,r=3))</FONT></DIV>
  <DIV>&nbsp;</DIV><FONT face="Courier New" size=2>
  <DIV><BR>x&lt;-c(8,3,1,11,4,7)<BR>print(mean(x))</DIV>
  <DIV>&nbsp;</DIV>
  <DIV><BR>medias&lt;- apply(combix(x,2),1,mean)<BR>print(mean(medias))</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>#With-Replacement</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>combixr&lt;-function(x,r) 
  {<BR>n&lt;-length(x)<BR>total&lt;-n**r<BR>a&lt;-matrix(0,total,r)<BR>ind&lt;-rep(1,r)<BR>for 
  (i in 1:total){<BR>&nbsp;&nbsp; for (j in 
  1:r){a[i,j]&lt;-x[ind[j]]}<BR>&nbsp;&nbsp; for (j in 
  r:1){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  miro&lt;-j<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  ind[j]&lt;-ind[j]+1<BR>&nbsp;&nbsp; if (ind[j]&lt;n+1) 
  break()<BR>}<BR>&nbsp;&nbsp; while(miro&lt;r) {<BR>&nbsp;&nbsp; 
  ind[miro+1]&lt;-1<BR>&nbsp;&nbsp;&nbsp; 
  miro&lt;-miro+1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  }<BR>}<BR>return(a)<BR>}<BR>print(combixr(x=1:5,r=3))</DIV>
  <DIV>&nbsp;</DIV>
  <DIV><BR>x&lt;-c(8,3,1,11,4,7)<BR>print(mean(x))</DIV>
  <DIV>&nbsp;</DIV>
  <DIV><BR>medias&lt;- apply(combixr(x,2),1,mean)<BR>mean(medias)</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>#Other form</DIV>
  <DIV>&nbsp;</DIV>
  <DIV><BR>darcombi&lt;- 
  function(N,n,caso){<BR>vecpeq&lt;-rep(0,n)<BR>ante&lt;-0<BR>ante1&lt;-0<BR>for(i 
  in 1:n){<BR>N1&lt;- N-(ante1+1)<BR>n1&lt;- 
  n-i<BR>v1&lt;-cumsum(choose(N1:n1,n1))<BR>ante&lt;-min(which(caso&lt;=v1))<BR>vecpeq[i]&lt;-ante+ante1<BR>resta&lt;-0<BR>if 
  (ante&gt;1) 
  resta&lt;-v1[ante-1]<BR>caso&lt;-caso-resta<BR>ante1&lt;-vecpeq[i]<BR>}<BR>return(vecpeq)<BR>}</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>N&lt;-5<BR>n&lt;-3</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>for (i in 1:choose(N,n)){<BR>print(darcombi(N=N,n=n,i))<BR>}</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>x &lt;- c(43, 28, 7, 61, 39)<BR>N&lt;-length(x)<BR>n&lt;-3</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>for (i in 
  1:choose(N,n)){<BR>print(x[darcombi(N=N,n=n,i)])<BR>}<BR></FONT><FONT 
  face=Arial size=2>&nbsp;&nbsp;&nbsp; 
</FONT></DIV></BLOCKQUOTE></DIV></BODY></HTML>