Message-ID: <20120730180444.GA5456@cs.cas.cz>
Date: 2012-07-30T18:04:45Z
From: Petr Savicky
Subject: A "matching problem"
In-Reply-To: <5016A07F.9050208@gmail.com>
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.
Hi.
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.
library(permute)
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.