Skip to content

code to find all distinct subsets of size r from a set of size n

3 messages · Dale Steele, Kingsford Jones, David Winsemius

#
I'm doing a permutation test and need to efficiently generate all
distinct subsets of size r from a set of size n.  P 138 of MASS (4th
ed) notes that  "The code to generate this efficiently is in the
scripts".  I was unable to find this code on quick inspection of the
\library\MASS\scripts file for Chapter 5 and 'subsets' is not a
function in MASS.

I did find this problem is discussed in RNews, Programmer's Niche
1(1):27 - 30 and RNews, 1(2):29-31.  Is there function in 'base'  R or
other package to do this?  Thanks.  --Dale
#
For permutations a couple of options are 'permutations' in package
gtools, and 'urnsamples' in package prob

hth,
Kingsford Jones
On Fri, Mar 13, 2009 at 6:35 AM, Dale Steele <dale.w.steele at gmail.com> wrote:
#
If your subsets are to be taken from the rows of a dataframe, df, and  
the size is r, then something like this could satisfy:

apply(combn(nrow(df), r), 2, function(x) df[x, ])

(Although these are not really permutations as I understand that term.)