[R] A "matching problem"

Petr Savicky savicky at cs.cas.cz
Mon Jul 30 20:04:45 CEST 2012

On Mon, Jul 30, 2012 at 08:40:59PM +0545, Christofer Bogaso wrote:
> Dear all, I was encountering with a typical Matching problem and was 
> wondering whether R can help me to solve it directly.
> Let say, I have 2 vectors of equal length:
> vector1 <- LETTERS[1:6]
> vector2 <- letters[1:6]
> Now I need to match these 2 vectors with all possible ways like:
> (A,B,C,D,E) & (a,b,c,d,e) is 1 match. Another match can be (A,B,C,D,E) & 
> (b,a,c,d,e), however there cant be any duplication.


If i understand correctly, all matches are obtained by taking all
permutations of (a,b,c,d,e) and relating them to unchanged (A,B,C,D,E).
Try the following.

  vector2 <- letters[1:3]
  p <- allPerms(length(vector2), observed=TRUE)
  matrix(vector2[p], nrow=nrow(p), ncol=ncol(p))
       [,1] [,2] [,3]
  [1,] "a"  "b"  "c" 
  [2,] "a"  "c"  "b" 
  [3,] "b"  "a"  "c" 
  [4,] "b"  "c"  "a" 
  [5,] "c"  "a"  "b" 
  [6,] "c"  "b"  "a" 

The rows of the resulting matrix are all permutations of vector2.

Hope this helps.

Petr Savicky.

More information about the R-help mailing list