[R] generate combination set

Charilaos Skiadas cskiadas at gmail.com
Thu Nov 15 15:07:10 CET 2007


I must be missing something. What's wrong with:

combn(set, 2)

or if we must t(combn(set,2)), optionally with a function argument in  
the combn call if something is to be done with the pairs?

So if you really wanted the outputs to be "AB","AC" etc, you would do:

combn(set,2, paste, collapse="")

Haris Skiadas
Department of Mathematics and Computer Science
Hanover College

On Nov 15, 2007, at 8:54 AM, Adrian Dusa wrote:

> Using your "set", wouldn't it be simpler like this?
>
> t(apply(combn(7,2), 2, function(x) set[x]))
>
> Hth,
> Adrian
>
> On Thursday 15 November 2007, Bill.Venables at csiro.au wrote:
>> There are a number of packages that do this, but here is a simple
>> function for choosing subsets:
>>
>> subsets <- function(n, r)  {
>>   if(is.numeric(n) & length(n) == 1) v <- 1:n else {
>>     v <- n
>>     n <- length(v)
>>   }
>>   subs <- function(n, r, v)
>>     if(r <= 0) NULL else
>>     if(r >= n) matrix(v[1:n], nrow = 1) else
>>     rbind(cbind(v[1], subs(n - 1, r - 1, v[-1])),
>>                       subs(n - 1, r    , v[-1]))
>>   subs(n, r, v)
>> }
>>
>> Here is an example of how to use it:
>>> set <- LETTERS[1:7]
>>> subsets(set, 2)
>>
>>       [,1] [,2]
>>  [1,] "A"  "B"
>>  [2,] "A"  "C"
>>  [3,] "A"  "D"
>>  [4,] "A"  "E"
>>  [5,] "A"  "F"
>>  [6,] "A"  "G"
>>  [7,] "B"  "C"
>>  [8,] "B"  "D"
>>  [9,] "B"  "E"
>> [10,] "B"  "F"
>> [11,] "B"  "G"
>> [12,] "C"  "D"
>> [13,] "C"  "E"
>> [14,] "C"  "F"
>> [15,] "C"  "G"
>> [16,] "D"  "E"
>> [17,] "D"  "F"
>> [18,] "D"  "G"
>> [19,] "E"  "F"
>> [20,] "E"  "G"
>> [21,] "F"  "G"
>>
>>
>> Bill Venables
>> CSIRO Laboratories
>> PO Box 120, Cleveland, 4163
>> AUSTRALIA
>> Office Phone (email preferred): +61 7 3826 7251
>> Fax (if absolutely necessary):  +61 7 3826 7304
>> Mobile:                         +61 4 8819 4402
>> Home Phone:                     +61 7 3286 7700
>> mailto:Bill.Venables at csiro.au
>> http://www.cmis.csiro.au/bill.venables/
>>
>> -----Original Message-----
>> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r- 
>> project.org]
>> On Behalf Of aiminy at iastate.edu
>> Sent: Thursday, 15 November 2007 2:51 PM
>> To: r-help at r-project.org
>> Subject: [R] generate combination set
>>
>> I have a set data={A,B,C,D,E,F,G}
>> I want to choose 2 letter from 8 letters, i.e. generate the  
>> combination
>> set
>> for choose 2 letters from 8 letters.
>> I want to get the liking:
>> combination set={AB,AC,AD,....}
>> Does anyone konw how to do in R.
>>
>> thanks,
>>
>> Aimin
>>
>> ______________________________________________
>> 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.
>
>
>
> -- 
> Adrian Dusa
> Romanian Social Data Archive
> 1, Schitu Magureanu Bd
> 050025 Bucharest sector 5
> Romania
> Tel./Fax: +40 21 3126618 \
>           +40 21 3120210 / int.101
>



More information about the R-help mailing list