Skip to content

getting all pairwise combinations of elements in a character string

4 messages · Levi Waldron, Wills, Kellie, jim holtman

#
I'm able to do this as follows, but am wondering if anyone knows a 
simpler way which still avoids explicit loops?

 > (mystring <- letters[1:5])
[1] "a" "b" "c" "d" "e"
 > unlist(sapply(mystring[-length(mystring)],
+               function(x) 
paste(x,mystring[(grep(x,mystring)+1):length(mystring)],sep="")))
  a1   a2   a3   a4   b1   b2   b3   c1   c2    d
"ab" "ac" "ad" "ae" "bc" "bd" "be" "cd" "ce" "de"
 >
#
How about

m <- outer(mystring, mystring, paste, sep="")
m[upper.tri(m)]

Kellie Wills


-----Original Message-----
From: r-help-bounces at r-project.org on behalf of Levi Waldron
Sent: Thu 2/12/2009 12:20 PM
To: r-help at r-project.org
Subject: [R] getting all pairwise combinations of elements in a characterstring
 
I'm able to do this as follows, but am wondering if anyone knows a 
simpler way which still avoids explicit loops?

 > (mystring <- letters[1:5])
[1] "a" "b" "c" "d" "e"
 > unlist(sapply(mystring[-length(mystring)],
+               function(x) 
paste(x,mystring[(grep(x,mystring)+1):length(mystring)],sep="")))
  a1   a2   a3   a4   b1   b2   b3   c1   c2    d
"ab" "ac" "ad" "ae" "bc" "bd" "be" "cd" "ce" "de"
 >
#
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] "a"  "a"  "a"  "a"  "b"  "b"  "b"  "c"  "c"  "d"
[2,] "b"  "c"  "d"  "e"  "c"  "d"  "e"  "d"  "e"  "e"
On Thu, Feb 12, 2009 at 12:20 PM, Levi Waldron
<lwaldron at uhnres.utoronto.ca> wrote:

  
    
#
I like both of these solutions much better - thank you!
-Levi