У меня есть набор данных, который выглядит так
target.id source.id connected
1 1 0
2 1 0
3 1 0
4 1 0
5 1 0
6 1 0
1 2 1
2 2 0
3 2 1
В основном у меня есть исходное местоположение, целевое местоположение и связаны ли они. Здесь связи являются направленными, например, точка 1 может быть соединена с точкой 8, а точка 8 не связана с точкой 1 (подумайте о рейсах авиакомпаний, где Atlantis может отправлять рейсы на Марс, а Марс не может отправлять рейсы на Atlantis, что означало бы Атлантида соединяется с Марсом, а Марс не соединяется с Атлантидой).
Мне нужно определить наборы «полностью» связанных местоположений, где все наблюдения являются источниками и целями друг друга. Мне нужно сделать это попарно, 3 на 3, и до тех пор, пока это возможно, учитывая, что у меня есть 75 мест. Пример вывода: для 3 на 3 местоположения 3, 5 и 8 являются как источниками, так и целями друг друга.
То, как я пытался справиться с этим, заключалось в том, чтобы получить все перестановки 1:length(unique(target.id))
2 на 2, 3 на 3, до 8 на 8 (8 на 8 - это максимальные наборы, на которые я бы посмотрел), а затем intersect
все из них.
Однако, очевидно, это слишком медленно. Любые лучшие подходы?