У меня есть набор из 6 векторов разной длины (имена столбцов: tp1-tp6). Выглядит примерно так:
tp1 tp2 tp3 tp4 tp5 tp6
K06167 K14521 K17095 K21805 K03238 K18213
K07376 K17095 K01424 K13116 K03283 K14521
K03347 K14521 K14319 K00799 K08901 K01756
K20179 K01693 K01682 K03283 K02716 K03238
K03527 K02882 K01414 K01693 K08907 K01850
K08901 K02912 K00940 K14319 K00411 K01768
K11481 K02868 K04043 K14835 K01414 K15335
K02716 K14835 K12606 K19371 K00963 K12818
K03545 K14766 K09550 K04043 K01749 K02975
K08907 K00602 K15437 K09550 K03116 K03002
K15470 K10798 K03456 K03687 K09550 K17679
K16465 K14823 K18059 K03456 K08738 K13116
K03116 K00940 K03115 K18534 K08907 K14521
K08738 K16474 K15502 K03495 K03687 K01937
K08907 K19371 K00026 K13100 K08907 K03002
.
.
.
Я хотел бы создать список, содержащий все соответствующие значения K, соответствующие каждой возможной комбинации 6 векторов. Например, для комбинации tp2 и tp3 я хочу найти все значения, которые у двух векторов являются общими, но не появляются ни в одном из других векторов (tp1, tp4, tp5, tp6). В данном случае это будет K00940. Возможно ли это с векторами разной длины в R?
Аналогичный вопрос был задан в
Поиск всех возможных комбинаций пересечений векторов?
и я попробовал один из кодов, приведенных в ответах. Хотя код дает мне все возможные комбинации и их соответствующие значения в большом списке, он не учитывает то обстоятельство, что мне нужны только уникальные пересечения между разными векторами. Например, комбинация tp2 и tp3 дала мне все возможные значения, общие для двух векторов, но включала значения, которые присутствовали в других векторах, которые также присутствовали в tp2 и tp3. Мне просто нужны уникальные значения, общие только для tp2 и tp3.
veclist <- list(tp1, tp2, tp3, tp4, tp5, tp6)
combos <- Reduce(c,lapply(1:length(veclist), function(x) combn(1:length(veclist),x,simplify=FALSE)))
CKUP_combos <- lapply(combos, function(x) Reduce(intersect, veclist[x]) )