ChooseSS = function(people, avoidmatch){ permuteMyPeople = function(peeps){ PeepsPermuted = sample(peeps) if(any(peeps==PeepsPermuted)){ PeepsPermuted = permuteMyPeople(peeps) } return(PeepsPermuted) } cbindMyPermutedPeople = function(peeps){ cbind(p1=people, p2=permuteMyPeople(people)) } ret = cbindMyPermutedPeople(people) m1 = sapply(avoidmatch, match, ret[,1]) m2 = sapply(avoidmatch, match, ret[,2]) while(any(m1[1,]==m2[2,])|any(m1[2,]==m2[1,])){ ret = cbindMyPermutedPeople(people) m1 = sapply(avoidmatch, match, ret[,1]) m2 = sapply(avoidmatch, match, ret[,2]) } ret }