У меня есть набор из 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
.
.
.
Я хотел бы создать список, содержащий все соответствующие значения Kvalue, соответствующие каждой возможной комбинации из 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]) )