Если элементы вашего массива являются «парами», они могут быть фактическими парами, а не строками, например:
pairs = [['R1', 'R2'], ['R3', 'R4'], ['R2', 'R1'], ['R5', 'R6']]
И, фактически, поскольку порядок нене имеет значения, похоже, они действительно должны быть установлены:
require 'set'
sets = [Set['R1', 'R2'], Set['R3', 'R4'], Set['R2', 'R1'], Set['R5', 'R6']]
Если это так, то Array#uniq
будет просто работать, как и ожидалось:
sets.uniq
#=> [#<Set: {"R1", "R2"}>, #<Set: {"R3", "R4"}>, #<Set: {"R5", "R6"}>]
Таким образом, наилучшим способом было бы изменить код, который создает это значение, чтобы он возвращал массив двухэлементных наборов.
Если это невозможно, вам следует преобразовать значение вГраница системы, когда она входит в систему, примерно так:
sets = a.map {|el| el.split(',') }.map(&Set.method(:new))